在做将结构提写入的练习时,发现使用fwrite()方法将内容写入txt时,只能将char 数组类型的名称正确写入txt。而int类型的数据,则是以ASCII码转换成字母了(比如我输入成绩为100,则写入txt时内容为d)。
下面简单贴一下代码,期待有大佬解答
#include
#include
#include
#pragma warning(disable:4996)
//编写函数in(),输入若干学生信息(包含学号、姓名、C语言成绩),存入文件in。txt,输入以#作为结束标志
void in(int n) {
FILE* f1;
typedef struct student {
char name[20];
int id;
int grade;
}student;
student a[100];
for (int i = 0; i < n; i++)
{
printf("请输入第%d个学生的姓名:", i + 1);
scanf("%s", a[i].name);
printf("请输入第%d个学生的学号:", i + 1);
scanf("%d", &a[i].id);
printf("请输入第%d个学生的成绩:", i + 1);
scanf("%d", &a[i].grade);
}
if ((f1 = fopen("D:\Fidelio\in.txt", "wb")) == NULL)
{
printf("文件打开失败");
}
for (int j = 0; j < n; j++)
{
fwrite(&a[j], sizeof(student), 1, f1);
}
if (fclose(f1))
{
printf("文件关闭失败");
}
}
int main() {
int n;
printf("共有几位同学的成绩需要录入:");
scanf("%d", &n);
in(n);
return 0;
}
效果为
在网上搜了很多答案,都没有解决此问题
于是我便使用fprint()方法进行写入txt
将fwrite(&a[j], sizeof(student), 1, f1);替换成fprintf(f1, "%s %d %d", a[j].name,a[j].grade,a[j].id);
此时从键盘输入一模一样的内容写入txt时,显示就完全正常。



