Định nghĩa cấu trúc Học sinh (họ tên, lớp)
Định nghĩa kiểu mảng Học sinh
#include <conio.h>
#include <stdio.h>
#include <string.h>
typedef struct{
char hoten[30];
char lop[6];
} Hocsinh;
typedef Hocsinh Mang[100];
Chương trình con: chuẩn hóa 1 xâu về dạng tên riêng (sử dụng con trỏ)
char* chuanhoaTen(char* ten){
//bo cac dau cach thua
int i=0;
//dau cach o dau
while(ten[i]==32) i++;
strcpy(&ten[0], &ten[i]);
//dau cach o giua
for (i=0; i<strlen(ten)-1; i++)
while (ten[i]==32 && ten[i+1]==32)
strcpy(&ten[i], &ten[i+1]);
//dau cach o cuoi
while(ten[strlen(ten)]==32)
ten[strlen(ten)]='\0';
//viet hoa ki tu dau tu
if (ten[0]>='a' && ten[0]<='z')
ten[0]=ten[0]-32;
for (i=0; i<strlen(ten)-1; i++)
if (ten[i]==32 && ten[i+1]!=32 )
if (ten[i+1]>='a' && ten[i+1]<='z')
ten[i+1]=ten[i+1] - 32;
return ten;
}
Chương trình con: nhập, hiện mảng học sinh
void nhap(Hocsinh *m, int *n){
int i;
printf("Bao nhieu hoc sinh? ");
scanf("%d", n);
for (i=0; i<*n; i++){
printf("\n Hoc sinh [%d]\n", i+1);
printf(" Ho ten: ");
fflush(stdin);
gets(m[i].hoten);
printf(" Lop: ");
fflush(stdin);
gets(m[i].lop);
strcpy(m[i].hoten, chuanhoaTen(m[i].hoten) );
}//for
}
void hien(Hocsinh *m, int n){
int i=0;
for (i=0; i<n; i++){
printf("\n Ho ten: %s", m[i].hoten);
printf("\n Lop: %s", m[i].lop);
printf("\n ------------");
}
}
Chương trình con: ghi những học sinh của 1 lớp (theo tham số) từ mảng vào file Lop.dat
void ghiFile(Hocsinh *m, int n, char *lop){
FILE *f = fopen("Lop.dat", "wb");
int i;
for (i=0; i<n; i++){
if (strcmp(m[i].lop, lop)==0){
fwrite(&m[i], sizeof(Hocsinh), 1, f);
}
}
fclose(f);
}
Chương trình con: đọc và hiện nội dung file Lop.dat ra màn hình
void docFile(){
FILE *f = fopen("Lop.dat", "rb");
fseek(f, 0, SEEK_END);//ve cuoi file
//vi tri hien tai cua con tro file
//--> len la kich thuoc file
long len = ftell(f);
fseek(f, 0, SEEK_SET);//ve dau file
int n=len/sizeof(Hocsinh);//so phan tu trong file
while(n>0){
Hocsinh hs;
fread(&hs, sizeof(Hocsinh) , 1, f);
printf("\n Ho ten: %s", hs.hoten);
printf("\n Lop: %s", hs.lop);
printf("\n -------------");
n--;
}
fclose(f);
}
Chương trình chính:
Nhập N học sinh, chuẩn hóa tên của các học sinh đó.
Hiện danh sách học sinh vừa nhập ra màn hình
Nhập vào 1 tên lớp, ghi các học sinh lớp đó ra file Lop.dat
Đọc và hiện nội dung file đó ra màn hình
void main(){
Mang a;
int n;
char l[5];
clrscr();
nhap(a, &n);
clrscr();
printf("n=%d", n);
hien(a, n);
printf("\n Nhap 1 lop: ");
fflush(stdin);
gets(l);
ghiFile(a, n, l);
clrscr();
printf("\n Da ghi vao file");
docFile();
getch();
}