簡單的文件操作
//將2個學生的記錄輸入txt文件,並且顯示在屏幕中 #include <stdio.h> #include <stdlib.h> #define N 2 typedef struct stu{ char Class[20]; int age; char name[9]; }stu;//需要自定義類型(typedef),stu才能定義對象 int main() { int i,n; char Class[20]; int age; char name[9]; FILE *fp; printf("將學生信息寫入文件:\n"); fp = fopen("E:\\c\\stu.txt","w");//對指定文件進行寫操作 for(i=0;i<N;i++) { printf("學生班級:"); scanf("%s",&Class); printf("學生年齡:"); scanf("%d",&age); printf("學生姓名:"); scanf("%s",&name); fprintf(fp,"%s%6d%10s",Class,age,name);//將學生信息寫到文件中去 fputc('\n',fp);//沒寫入一條信息就換行此處'\n'可替換為'\r' } fclose(fp);//關閉文件 printf("從文件中讀取學生信息:\n"); fp = fopen("E:\\c\\stu.txt","r");//對指定文件進行讀操作 for(i=0;i<N;i++) { fscanf(fp,"%s%6d%20s",&Class,&age,&name); printf("學生班級:%s,學生年齡:%d,學生姓名:%s\n",Class,age,name); } fclose(fp); printf("向文件中追加學生信息:\n"); fp = fopen("E:\\c\\stu.txt","wb"); printf("追加個數:"); scanf("%d",&n); stu *s = (stu*)malloc(sizeof(stu)*n);//動態開辟結構體數組 for(i=0;i<n;i++) { printf("學生班級:"); scanf("%s",&s[i].Class); printf("學生年齡:"); scanf("%d",&s[i].age); printf("學生姓名:"); scanf("%s",&s[i].name); } if(fwrite(&s,sizeof(stu),n,fp)!=n)//操作成功,則返回實際寫入文件的數據塊的個數 { printf("文件不能寫入數據!\n"); exit(1); } fclose(fp); printf("從文件中追讀學生信息:\n"); fp = fopen("E:\\c\\stu.txt","rb"); if(fread(&s,sizeof(stu),n,fp)!=n)//操作成功,則返回實際讀取文件的數據塊的個數 { printf("文件不能讀出數據!\n"); exit(1); } for(i=0;i<n;i++) { printf("學生班級:%s,學生年齡:%d,學生姓名:%s\n",s[i].Class,s[i].age,s[i].name); } fclose(fp); return 0; }