当前位置:首页 » 电脑资讯 » c读取txt文件为什么乱码

c读取txt文件为什么乱码

发布时间: 2022-05-16 15:47:36

⑴ c语言读取txt文件数据时最后有一串乱码怎么办

原因很简单:把while(!feof(fp))中的!feof(fp)改成1,然后在fscanf那一句后面加一句if(feof(fp)) break;就可以了。因为feof这个函数要在逻辑上紧跟在“读操作”语句后才能正确生效,而你的写法在第一次进入while时还没有读文件,feof(fp)判断什么?就是这里造成了最后文件越界了还当作正常数据在处理,当然就是乱码了……还有个写法就是把fscanf也写在while的()中,用逗号分开再写!feof(fp),while的体里就不再写fscanf了。这样逻辑很浅析。不过你的fscanf语句太长,写在()中不好看。有兴趣你可以试一下。

⑵ C语言读入写出文件,写出文件时出现个别乱码。

fread()

fwrite()
用于2进制文件读写。
也就是说,你打开文件时,无论读还是写
要有选项
b,
例如
"rb","wb".
文本文件,按2进制方式打开,就会按2进制方法处理。
改正你的
fopen
里的
选项,就可解决问题。

⑶ C语言中指针读写文件,问什么记事本都是乱码,怎么改呢

从代码看,在Windows平台是有大概率会乱码,假如你的商品信息数组里存放了换行就一定会乱码。

主要问题在文件的打开方式不对,fread, fwrite函数最好以二进制模式打开文件,即打开方式加上b,即(rb, wb)。在unix/Linux系统应该没问题。以下是问题解释:

二进制和文本模式的区别

1.在windows系统中,文本模式下,文件以""代表换行。若以文本模式打开文件,并用fputs等函数写入换行符" "时,函数会自动在" "前面加上" "。即实际写入文件的是"" 。

2.在类Unix/Linux系统中文本模式下,文件以" "代表换行。所以Linux系统中在文本模式和二进制模式下并无区别。

(3)c读取txt文件为什么乱码扩展阅读

ffopen为C语言编程中所需的一个常用语言,多数用来打开文件。其调用的一般形式为:文件指针名=fopen(文件名,使用文件方式);其中,‘’文件指针名”必须是被说明为FILE 类型的指针变量,文件名”是被打开文件的文件名;“使用文件方式”是指文件的类型和操作要求。“文件名”是字符串常量或字符串数组。

基本介绍函数功能:打开一个文件函数原型:FILE * fopen(const char * path,const char * mode);相关函数:open,fclose,fopen_s,_wfopenfopen所需库:返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno 中。一般而言,打开文件后会做一些文件读取或写入的动作,若打开文件失败,接下来的读写动作也无法顺利进行,所以一般在fopen()后作错误判断及处理。

参数说明:参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。

mode有下列几种形态字符串:

r 以只读方式打开文件,该文件必须存在。

r+ 以可读写方式打开文件,该文件必须存在。

rb+ 读写打开一个二进制文件,允许读写数据。

rw+ 读写打开一个文本文件,允许读和写。

w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。

w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。

a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)

a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)

wb 只写打开或新建一个二进制文件;只允许写数据。

wb+ 读写打开或建立一个二进制文件,允许读和写。ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。

⑷ c读文件乱码

把打开方式改为 "r"以及把读取信息用fscanf吧,因为如果你是原先先把kk.txt写好,然后再用你的程序打开它的话,由于里面有换行符以及空格等内容,除非开始你是用fwrite函数写入的结构信息,否则fread会把这些都作为信息读取的(也就是说它读到一个struct Student_type大小的数据就结束,而不管这里面到底存放的是什么,这个过程中读到的可能不是一个完整的结构的数据),所以就会出现你所说的乱码。

⑸ 我的c程序哪错了,为什么读文件显示的是乱码

while( ( c = fgetc(fp) != EOF ) )
这里错了。

( c = fgetc(fp) != EOF )外面这个括号是多余的,括号不该打在这儿,而应该是
( c = fgetc(fp) ) != EOF
因为!=的优先级比赋值号=高,你之前的写法,真正求值顺序相当于
c = (fgetc(fp) != EOF),所以直到fgetc读到文件末尾之前,c的值都是1,因为fgetc返回的值不等于EOF,但是当fgetc读到文件末尾的时候,
(fgetc(fp) != EOF)的值就是0,while循环退出,但是你要注意,c的值也变成0了。这样到你后面的do...while的测试c != EOF就衡成立,因为EOF在stdio.h里面定义的值不是0,然后就死循环了。我对你的两层循环作了一点小小的改动,那样输出的格式会和txt文件里面的保持一致。如下

do
{
i = 0;
while((c = fgetc(fp)) != EOF && c != '\n')
{
letter[i] = c;
i++;
}
letter[i++] = '\n';
letter[i] = '\0';
printf("%s", letter);
}while(c != EOF);

⑹ c语言关于文件的读写,为什么输出到文件上得到乱码

windows下,编码问题也有可能

  1. VC++6.0以上不存在这种可能

  2. GCC编译器,输入/出默认UTF-8,所以在windows下有问题,添加-finput-charset=GBK -fexec-charset=GBK


也有可能是输出文件编码问题,就是windows的记事本,不支持输出的文件的编码(MAC居多),你换一个编辑器看看,比如UltraEdit。这个是很正常的,比如你在文件里输出一个换行符时,用记事本打开输出文件,则发现变成空格了,实际是记事本读不了

⑺ c语言 txt文件怎么输出老是乱码

fwrite用于二进制写入,怎样写对于数据来说都是乱码,而对于字符则能正常输出,而对于结构体,最好使用格式输出函数fprintf()与fscanf(),这样可以保证输出的正确性,而fwrite函数时将内存中的二进制数据直接写入文本文件,像11001010这样的,所以文本文档当然会显示乱码了 。

⑻ C语言中file函数链表读取txt文本出现了乱码

提3条修改建议,保证通过。

  1. 删除fflush(stdin);。fflush(stdin)是清除标准输入缓冲区,与文件读入不搭界。

  2. 将fscanf(fp,"%d",&q->num);中的"%d"改为"%d ",d后的空格会吸收掉文件中的广义空格。(前一句可改可不改,因为这一句会自动跳过广义空格)

  3. 将print函数中的printf("%d %d",q->score,q->num);一句改为printf("%d %d ",q->score,q->num);,以使输出第二个整数后回车,让版面标准化。(前面输出字符串时不需要,因为fgets函数会把 读进来放在字符串的最后)

⑼ c语言程序读入到txt文本文档后,显示为乱码,请问要怎么解决呢

编码问题

可以参照https://..com/question/473658267.html

或者你把文件另存为另外的编码

再不行你就只有自行网络,

学习编程要学会使用搜索引擎

⑽ c语言读取文件数据乱码

把打开方式改为
"r"以及把读取信息用fscanf吧,因为如果你是原先先把kk.txt写好,然后再用你的程序打开它的话,由于里面有换行符以及空格等内容,除非开始你是用fwrite函数写入的结构信息,否则fread会把这些都作为信息读取的(也就是说它读到一个struct
Student_type大小的数据就结束,而不管这里面到底存放的是什么,这个过程中读到的可能不是一个完整的结构的数据),所以就会出现你所说的乱码。

热点内容
硬的东西为什么一下就碎了 发布:2025-01-20 01:35:22 浏览:832
淘宝为什么衣服越来越少了 发布:2025-01-20 01:25:30 浏览:140
为什么做梦梦境里自己睁不开眼睛 发布:2025-01-20 01:17:24 浏览:456
为什么一到晚上就感觉有虫子咬我 发布:2025-01-20 01:10:21 浏览:92
为什么男人觉得无家可归 发布:2025-01-20 01:10:13 浏览:502
为什么阿联酋女人不用戴头巾 发布:2025-01-20 01:06:35 浏览:387
为什么租微信要两个手机 发布:2025-01-20 01:05:00 浏览:461
小米手机音乐为什么不能播放 发布:2025-01-20 00:42:17 浏览:405
为什么眼睛会暗光 发布:2025-01-20 00:27:11 浏览:282
为什么有一键锁屏这个软件 发布:2025-01-20 00:18:41 浏览:981