#include "stdio.h"
#define N 2
int main()
{ int i = 0;
typedef struct student
{
char name[4] ;//="0,0,0,0"; // 姓名
char num[4] ;//="0,0,0,0"; // 学号
char age[4] ;//="0,0,0,0"; // 年龄
char sex[3] ;//="0,0,0"; // 性别
char score[2];//="0,0,0,0"; // 成绩
}stu;
stu students[5];
FILE *fp ;//= NULL;
printf("请输入学生的信息:\n");
for (; i < N; i++)
{
printf("str[%d] -> ", i);
scanf("%s,%s,%s,%s,%s", students[i].name, students[i].num, students[i].age, students[i].sex, students[i].score);
}
fp = fopen("students.txt", "w+");
fwrite(students, sizeof(struct student), 2, fp);
fclose(fp);
return 0;
}
试着在控制台里使用
chcp 65001
或许可以解决问题。。。
这种问题我也见过
不要直接写入整个结构体!要一个成员一个成员地写入文件。结构体的占用空间的大小,不等于所有成员大小之和。你这个结构体,因为有字节对齐的缘故,它的大小不是17个字节,而是20个字节。成员之间不是紧密排列的。
可以看下我之前的博文https://blog.csdn.net/qq_28249373/article/details/76784475