为什么C中的文件读写函数会出现这样的问题?

 以前从不关心C应用程序的开发,但是这次有点傻了,为什么?

//: test03.cpp
#include <stdio.h>
#include <stdlib.h>

struct student{
	char name[0x20];
	int score;
	long num;
	int age;
};

int main() {
	struct student stu[20];
	struct student stu2[30];
	system("cls");
	int i;
	char* p;
	for(i = 0; i < 20; i++) {
		p = stu[i].name;
		*p++ = 'a' + i;
		*p = '\0';
		stu[i].score = 20 + i;
		stu[i].num = 1 + i;
		stu[i].age = 10 + i;
	}
	for(i = 0; i < 20; i++) {
		printf("name:%s\t", stu[i].name);
		printf("score:%d\t", stu[i].score);
		printf("num:%d\t", stu[i].num);
		printf("age:%d\t\n", stu[i].age);
	}
	FILE* f;
	f = fopen("stu.dat", "w");
	fwrite(stu, sizeof(struct student), 20, f);
	fclose(f);
	f = fopen("stu.dat", "r");
	fread(stu2, sizeof(struct student), 20, f);
	fclose(f);
	printf("##########\n");
	for(i = 0; i < 20; i++) {
		printf("name:%s\t", stu2[i].name);
		printf("score:%d\t", stu2[i].score);
		printf("num:%d\t", stu2[i].num);
		printf("age:%d\t\n", stu2[i].age);
	}	
}
///:~
发布了159 篇原创文章 · 获赞 14 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_39410618/article/details/90572856