永发信息网

为什么我这个C语言代码将明码的文件读取到结构体中时总显示乱码?

答案:3  悬赏:50  手机版
解决时间 2021-03-30 02:29
为什么我这个C语言代码将明码的文件读取到结构体中时总显示乱码?
最佳答案
你的文件中的数据,不是用fwrite(结构体)这种方式写到文件中去的
所以,你用fread(&students[i],nLine,1,fp); 是不能正确读到数据的!
试一下如下代码:
#include
#include

struct student
{
    char num[13]; //---12位的整数会越界的,换成字符串
    char name[20];
    float score;
    char time[20];
}students[6];
int main()
{
    struct student studTmp;
    FILE* fp;

    if((fp=fopen("12.21shiyan.txt","r"))==NULL)
    {
        printf("can't build");
        return -1;
    }
    while(!feof(fp))
    {
fscanf(fp, "%s %s %s %f", studTmp.num, studTmp.name, studTmp.time, &studTmp.score ); //从文件中读数据
        printf("%s,%c,%f,%c",studTmp.num,studTmp.name,studTmp.score,studTmp.time); //float对应%f
    }
    fclose(fp);
return 0;
}追问你的代码能读出来学号 和分数 但没有 姓名 和 时间 啊
这是结果的图片

追答printf("%s,%s,%f,%s",studTmp.num,studTmp.name,studTmp.score,studTmp.time); //name和time都应该用%s输出才对,刚才没有改全!
全部回答
进行转换一下追问要怎样转换?追答UTF-8.追问能说详细一点吗?最好把代码发过来
用fread无法正确读取用文本表示的数字(你所谓明码),可以这么读:
char buffer[256];
fgets(buffer);
sscanf(buffer,"%d%s%f%s",&students[i].num,students[i].name,
&students[i].score,students[i].time);
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
敬畏上天什么意思
广汽集团有哪些车型。
大菇茑适合皖西北种植吗?
轻卡这里漏油,这里是什么油?
三星W2017来电归属地怎么设置?
单身要怎样度过一生6个方法让
上海市二手房产交易需要交哪些税费?
天赐鸿福500毫升多少钱
求一部香港电影,是郑丹瑞主演的,剧中好像还
如何理解会计师事务所审计档案管理办法第二十
求图大神一首歌,一个女生唱的他的歌词是就像
《安全带》(GB 6095—2009)/安全网》(GB
会计有为企业外部各有关方面提供信息的作用,
尺寸标注,如何用圆柱的边线做基准?
部落冲突十一本菊花阵怎么打 暴力狗球流三星
推荐资讯
abaqus不安装document可以吗
最后的舞者好看吗?
单选题下列哪一位统治者的统治起到了“政启开
鸽子比地方赛要交多少钱
怎样计算吊顶材料
LOL里的 EZ 是什么意思?
卢照邻简介 他是怎么死的
坤赢石材地址在哪,我要去那里办事
村里来卖净水器的 到底是不是骗局
求用html5来设计一个本地数据库通讯录
求证第n个质数(将质数由小到大编上序号,2算
哎,走了7天东西还不到
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?