栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

使用fwrite()将结构体写入txt的疑问

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用fwrite()将结构体写入txt的疑问

在做将结构提写入的练习时,发现使用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时,显示就完全正常。

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/656875.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号