
正文
c语言文件写入为什么会有乱码,c语言写入txt文件乱码怎么解决
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
C++文件写入问题,此代码为什么写入文件会是乱码
1、按数据定义结构的写入保持数据结构的长度,对于数值类型,再用文本方式打开时表现为乱码。例如float a=123467,写入文件后为4个字节,打开后不是文本表示的8个字节。写入数据用fprintf(fp,%s %s %d 这种方式。
2、=1) 简单看了下,这行有问题,往文件里写的时候是把一个字符串写进去,stud[i]是一个struct,强行把它序列化的话,内存中的存储不是连续的,这样写就会写入一些没用的数据,导致出错。
3、这个不是你程序的问题,是Windows记事本的Bug,因为程序输出的某些字符触发了这个bug,记事本把文件当成unicode编码处理,结果乱码。
4、采用二进制方式将数据写到文件中,其实是将结构体所在的内存信息写到了文件里,所以里面会有一些乱七八糟的信息。通常我们通过这个操作来理解,结构体在内存中的存储情况和内存的使用情况。
相关问答
Q1: 用C语言编写文件为什么文件里是乱码?
从代码看,在Windows平台是有大概率会乱码,假如你的商品信息数组里存放了换行就一定会乱码。主要问题在文件的打开方式不对,fread, fwrite函数最好以二进制模式打开文件,即打开方式加上b,即(rb, wb)。
采用二进制方式将数据写到文件中,其实是将结构体所在的内存信息写到了文件里,所以里面会有一些乱七八糟的信息。通常我们通过这个操作来理解,结构体在内存中的存储情况和内存的使用情况。
出问题的原因是你ftell得到的长度和你fread实际读到的字节数不符,原因是windows把回车看作/r/n2个字符,ftell读的时候也按2个算,但是fread读的时候却算一个,就是\n ,这就导致你fwrite的时候比你fread到的要多。
Q2: 急!C语言编程~写入文件的数据变成乱码是怎么回事?
简单看了下,这行有问题,往文件里写的时候是把一个字符串写进去,stud[i]是一个struct,强行把它序列化的话,内存中的存储不是连续的,这样写就会写入一些没用的数据,导致出错。
从代码看,在Windows平台是有大概率会乱码,假如你的商品信息数组里存放了换行就一定会乱码。主要问题在文件的打开方式不对,fread, fwrite函数最好以二进制模式打开文件,即打开方式加上b,即(rb, wb)。
结构体类型写入文件,那么保存的必然是二进制数据,直接看文件肯定是乱码的。如果想文件内容是直接可看的,那么不要直接存储结构体,应该自己设计这个文件的文本格式,按文本方式存储数据。
按数据定义结构的写入保持数据结构的长度,对于数值类型,再用文本方式打开时表现为乱码。例如float a=123467,写入文件后为4个字节,打开后不是文本表示的8个字节。写入数据用fprintf(fp,%s %s %d 这种方式。
Q3: C语言中指针读写文件,问什么记事本都是乱码,怎么改呢?
1、从代码看,在Windows平台是有大概率会乱码,假如你的商品信息数组里存放了换行就一定会乱码。主要问题在文件的打开方式不对,fread, fwrite函数最好以二进制模式打开文件,即打开方式加上b,即(rb, wb)。
2、造成这种情况的原因就是,存储在文件中的text,是文本,一般不用fread来读。
3、也有可能是输出文件编码问题,就是windows的记事本,不支持输出的文件的编码(MAC居多),你换一个编辑器看看,比如UltraEdit。
Q4: C语言fwrite写入文件后为什么出现乱码?
简单看了下,这行有问题,往文件里写的时候是把一个字符串写进去,stud[i]是一个struct,强行把它序列化的话,内存中的存储不是连续的,这样写就会写入一些没用的数据,导致出错。
从代码看,在Windows平台是有大概率会乱码,假如你的商品信息数组里存放了换行就一定会乱码。主要问题在文件的打开方式不对,fread, fwrite函数最好以二进制模式打开文件,即打开方式加上b,即(rb, wb)。
在MSDN中fwrite的解释是Writes data to a stream.你写入的是int型的数组,以二进制存放在文件中,当你用文本文档打开的时候是当作字符串识别的,看到的就成了乱码。
Q5: 我用c语言从键盘输入数据保存到文本文件中,为什么是一堆乱码,怎样解决...
=1) 简单看了下,这行有问题,往文件里写的时候是把一个字符串写进去,stud[i]是一个struct,强行把它序列化的话,内存中的存储不是连续的,这样写就会写入一些没用的数据,导致出错。
这种文本文件,不能直接使用读到结构的方法。因为结构里会有非文本的控制符,比如字符串结束符\0。
因为你是以二进制方式把结构体数据写到文件中,所以如果你用记事本打开来查看保存的文件,自然看到是乱码。只有你自己写的程序才可正确地读取和显示结果,当然你得写对。
结构体类型写入文件,那么保存的必然是二进制数据,直接看文件肯定是乱码的。如果想文件内容是直接可看的,那么不要直接存储结构体,应该自己设计这个文件的文本格式,按文本方式存储数据。
这个函数以二进制形式对文件进行操作。按数据定义结构的写入保持数据结构的长度,对于数值类型,再用文本方式打开时表现为乱码。例如float a=123467,写入文件后为4个字节,打开后不是文本表示的8个字节。
关于c语言文件写入为什么会有乱码和c语言写入txt文件乱码怎么解决的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。








