rongxh2010 发表于 2013-2-4 23:03:22

重拾C的文件操作

#include<stdio.h>#include<stdlib.h>#define SIZE 4#define FILENAME "person"struct person{int id;char name;};int main(){void copyContent(char inFileName[], char outFileName[]);void savePerson(struct person psons[], int size, char fileName[]);void readPerson(struct person psons[], int size, char fileName[]);char inFileName[] = "abc.txt";char outFileName[] = "abc2.txt";copyContent(inFileName, outFileName);int i, size = SIZE;char fileName[] = FILENAME;struct person psons;for(i = 0 ; i < size ; i ++ ){scanf("%d%s", &psons.id, psons.name);}savePerson(psons, size, fileName);struct person results;readPerson(results, size, fileName);for(i = 0 ; i < size ; i ++){printf("%d %s\n", results.id, results.name);}}//copy file contentvoid copyContent(char inFileName[], char outFileName[]){FILE *inFile, *outFile;char ch;if((inFile = fopen(inFileName, "r")) == NULL){printf("Cannot open inFile\n");exit(0);}if((outFile = fopen(outFileName, "w")) == NULL){printf("Cannot open outFile\n");exit(0);}while( ! feof(inFile)){ch = fgetc(inFile);fputc(ch, outFile);putchar(ch);}fclose(inFile);fclose(outFile);}//save struct content to filevoid savePerson(struct person psons[], int size, char fileName[]) {FILE* fp;int i;if((fp = fopen(fileName, "wb")) == NULL){printf("Cannot open file\n");exit(0);}for(i = 0 ; i < size ; i ++ ) {if(fwrite(&psons, sizeof(struct person), 1, fp) != 1)printf("file write error.\n");}fclose(fp);}//read struct content from filevoid readPerson(struct person psons[], int size, char fileName[]){FILE* fp;int i;if((fp = fopen(fileName, "rb")) == NULL){printf("Cannot open file\n");exit(0);}for(i = 0 ; i < size ; i ++ ){if(fread(&psons, sizeof(struct person), 1, fp) != 1)printf("Cannot open file\n");}fclose(fp);}
页: [1]
查看完整版本: 重拾C的文件操作