c++ 块写入结构体到文件用fwrite fread

#define N 2
struct stu {
    char name[10]; //姓名
    int num;  //学号
    int age;  //年龄
    float score;  //成绩
}boya[N], boyb[N], *pa, *pb;

int main() {

    FILE *fp;
    int i;
    pa = boya;
    pb = boyb;
    if ((fp = fopen("d:\\demo.txt", "wb+")) == NULL) {
        puts("Fail to open file!");
        exit(0);
    }
    //从键盘输入数据
    printf("Input data:\n");
    for (i = 0; i < N; i++, pa++) {
        scanf("%s %d %d %f", pa->name, &pa->num, &pa->age, &pa->score);
    }
    //将数组 boya 的数据写入文件
    fwrite(boya, sizeof(struct stu), N, fp);
    //将文件指针重置到文件开头
    rewind(fp);
    //从文件读取数据并保存到数据 boyb
    fread(boyb, sizeof(struct stu), N, fp);
    //输出数组 boyb 中的数据
    for (i = 0; i < N; i++, pb++) {
        printf("%s  %d  %d  %f\n", pb->name, pb->num, pb->age, pb->score);
    }
    fclose(fp);
    return 0;

}

速度还是可以,50w条,几毫秒时间就可以写入。

块循环读取,用fwrite,fread因为比c++的效率高

include 
#include 


#define BUFFSIZE 1024

int main(int argc, char **argv){

    char buff[BUFFSIZE];
    FILE *fd = fopen (argv[1], "rb");
    int count, errno=0;

    bzero (buff, BUFFSIZE);
    while (!feof (fd)){
        count = fread (buff, sizeof (char), BUFFSIZE, fd);
        int n = feof (fd);
        printf ("%d,%d\n", count, n);
        printf ("%s\n",strerror (errno));
    }
    return 0;
}

你可能感兴趣的:(c++,程序效率)