问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言文件操作中输出结构体乱码的问题

发布网友 发布时间:2024-09-26 19:15

我来回答

6个回答

热心网友 时间:2024-09-29 16:03

你的out.txt的内容是你自己打进去的,不是用fwrite写进去的,而且你结构中还包含了,什么的,如果你的内容是用fwrite写进去的就可以用fread读了,
它们是要配合使用的。

热心网友 时间:2024-09-29 16:03

别取巧啦。。
struct student_type
{char name[10];
int num;
int age;
char addr[15];
}stud[SIZE];
问题在于它的内容比有效的内容大很多。所以读入的时候,把下个记录的内容也读进来了。
用空格和逗号作分隔,一个一个读取吧。

热心网友 时间:2024-09-29 16:03

你读的时候是按照结构体大小去读的,但是你的数据并不是和你的结构体长度对齐的,比如你用来保存名字的大小是10个字节,但是实际你文本中的名字只有3个字节,这样后面的2002之类的也都保存到char name[10];中了,明白?
修改方法有两个,一个是做成文本对齐的格式,就是文本文件中字符串总是和你定义的结构体中数组的长度一致,不够的补空格,另一个就是用fscanf来替代fread。

热心网友 时间:2024-09-29 16:04

标出来错的位置了 自己改吧

#include <stdio.h>
#include<conio.h>
#define SIZE 4

struct student_type
{
char name[10];
int num;
int age;
char addr[15];
}stud[SIZE];

void main()
{
FILE *out;
int i=1;

out=fopen("out.txt","r");

for(i=0;i<SIZE;i++)

{
fread(&stud[i],sizeof(struct student_type),1,out); //长度过大,很明显你没有用到sizeof(struct student_type)这么长,因为名字和地址并没有用满整个字符数组,你定义char name[3];char addr[7];再运行看看就知道了
printf("%-10s,%4d,%4d,%-15s\0\n", stud[i].name,stud[i].num,stud[i].age,stud[i].addr);
}
fclose(out);
getch();

}

热心网友 时间:2024-09-29 16:05

好难啊 我自己也看不懂。。。

热心网友 时间:2024-09-29 16:05

yo,加分了,给我留着
C语言文件操作中输出结构体乱码的问题

你的out.txt的内容是你自己打进去的,不是用fwrite写进去的,而且你结构中还包含了,什么的,如果你的内容是用fwrite写进去的就可以用fread读了,它们是要配合使用的。

C语言文件输出时,输入数据后为什么会出现乱码

=1) 简单看了下,这行有问题,往文件里写的时候是把一个字符串写进去,stud[i]是一个struct,强行把它序列化的话,内存中的存储不是连续的,这样写就会写入一些没用的数据,导致出错。考虑一下怎么把struct序列化,再看看struct的中的字节是怎么对齐的,建议而已 ...

C语言运行文件,出来好多乱码是怎么回事啊。。求高手。。。

输入的字符串长度是多少呢?scanf这个函数在连续输入不同类型的时候注意了,一不小心就出问题。因为%s! %s 很有可能把后面的元素也包含进去了,这样,你其实只有 p1-&gt;name 或者 p1-&gt;type 初始化了,后面的变量全部没有初始化,建议调试一下,看看这些结构体成员都是什么值。我想很可能其中一个字符串...

c语言输出乱码,求解决方法

输出乱码的原因见下图标红的地方:第一个标红处的for循环语句后面多了分号; 导致下面{}中的语句与for无关 而printf()语句中的i此时等于N,又stu[N]上没有数据,所以会输出乱码;同理后面输出最高成绩学生时,i的值也为N,因此最后打印stu[i]时也会输出乱码;我觉得你的本意应该是输出stu[no],...

C语言写文件的时候出现乱码“烫烫烫烫烫烫烫烫”是怎么回事

这是你定义的字符串没有初始化为0,当输出的时候编译器找到不到字符串结束符。就会出现这样的乱码。你可以将你的结构体中定义的字符数组都初始化为0.或者直接用memset()把结构体定义的变量初始化为0试一下。你的程序没有具体看,不过应该就是这个问题吧~...

帮我检查一下以下代码(c语言),运行后我验证文件内容的时候发现里面是乱...

"文件内容的时候发现里面是乱码" 是对的,因为你用的是fwrite()函数,是二进制写。如果想看到不是乱码,请改成fprintf()函数

c语言中,存储文件时为什么乱码,但显示的时候不是乱码

因为你存入文件的是一个个的结构体变量,而不是单纯的文本数据

急!c语言编程写入文件后出现乱码,在编译框里也有乱码,不知道什么问题...

结构体里定义那么多数组是什么意思?这个程序是要干什么,很乱呀 乱码可能是你输入了汉字,用二进制形式打开文件试试

C语言,结构体和文件操作,bug求解,急!!好的追加

先指出几个问题请改正:代码结构有问题——打开文件的语句放在for循环里,那就会一次又一次地打开,要知道打开一个已经打开的文件是要出错的。文件路径中的反斜杠要双写。文件用完后应该立即关闭。

C语言从文件中读取多个结构体数据到结构体中间失败

int fread( void *buffer, size_t size, size_t num, FILE *stream );函数fread()读取[num]个对象(每个对象大小为size(大小)指定的字节数),并把它们替换到由buffer(缓冲区)指定的数组.数据来自给出的输入流. 函数的返回值是读取的内容数量...使用feof()或ferror()判断到底发生哪个错误.=== ...

C语言用结构体输出文本文件内容 C语言中结构体输出书的名称和价格 c语言结构体如何输入输出 c语言结构体输入输出 C语言如何使用结构体输出学生信息 C语言结构体头文件 c语言输出结构体数组 c语言结构体输出学生成绩 输出结构体中的数组
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怪物猎人X烬灭大剑配装推荐介绍_怪物猎人X烬灭大剑配装推荐是什么_百 ... 怪物猎人3G剑士终极套装混装 《怪物猎人XX》神岛控制流配装攻略介绍_《怪物猎人XX》神岛控制流配装... 一个月前脚崴了一下,当时没事,可现在早晨起来走路会很疼,过一会儿就没... 易切削钢Y15pb屈服是多少? 地下城与勇士EX难度是什么难度哦 怪物猎人4碎弓我配出了炸弹人但是为什么它的面板爆破值还是190没变成220... 我前几天打篮球右脚崴了,当时没有那么痛,只是揉几下就穿上鞋走了也没... ...从前虽然都会痛但从未像这样过,痛到自己睡不着。我这是怎_百度... ...不怎么疼了,但是还是有点肿起来碰它也会... 销售假药罪中的假药的是什么? 认定为生产假药的行为不包括的有哪些? 耳钉在耳洞里,弄不出来怎么办 生产销售假药立案标准是怎样的 滑稽的稽意思 滑稽是什么意思 如何把百度网盘里的音乐导入到网易云音乐里? 这是洗面奶还是面膜?还是别的护肤品?谁认识韩文? sunnyspa冰淇淋面膜怎么样_好用吗 从花桥到昆山世茂东外滩怎么坐车 桃淑屋水光面膜怎么样?tosowoong水光面膜好用吗? 请问,这是什么牌子的面膜,看不懂韩文 sunnyspa冰淇淋面膜多少钱_专柜价格 桃淑屋水光面膜怎么用?桃淑屋水光面膜使用方法 张庭和范冰冰演的宫廷戏叫什么名 难看的近义词shun怎么写? 慕尼黑旅游景点国内 去慕尼黑旅行有哪些好玩的项目值得打卡? tiktok是什么app 微信群聊里面怎么单独跟某一个人聊天 tiktok是什么吗 酒吧的营销人员在上班时间可以随便出来吃饭吗 我和一个同事,都是在酒吧上班,他是营销,我是前台,有一天下班很晚,他刚... 如何让自己更加的有自信? 精华 是什么意思? 什么是精华? 怎么给漫画怕踢投稿 红米NOTEroot之后恢复出厂设置能不能在系统更新了 为什么我的红米note不能进行系统更新,难道是因为我已经用Kingroot root... ...需要写一篇作文,老师叫我写一篇《令我感动的事情》,希望大家能帮我... 红米noteroot之后怎么老升级系统出错 坐车老晕车,有啥好办法?急!亲们 凯悦和威斯汀哪个好 ...重庆到广州 准备明天去买票 N多疑问 望亲们多费口水拉. 不胜感激... 有什么办法可以治狗狗晕车 肩周炎膏药贴什么位置 肩周炎膏药贴哪里 燃气热水器出现e1什么意思啊怎么处理 热水器显示“E1”是什么意思 肩周炎贴膏药位置 求一部网游小说,主角游戏里能自创技能,主角和他的朋友能把游戏里的...