
正文
C语言读取字符乱码问题,c语言读取字符串字符时出错
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
c语言输出字符串数组出现乱码
C语言字符串以\0结尾,如果不以该符号结尾则输出%s时会出错,程序一直往存放字符串的地址访问。而你的程序中并没有赋\0给那两个数组,所以会出现乱码。
输出出现乱码就是因为字符串结尾并没有结尾符\0。gets函数读入一行字符串时,会在最末尾自动加上\0结尾。
printf(XXX)} 就可以了~ 其中\0是字符串的结束符。
楼主注意字符数组的输入,cin字符数组的地址。
=1) 简单看了下,这行有问题,往文件里写的时候是把一个字符串写进去,stud[i]是一个struct,强行把它序列化的话,内存中的存储不是连续的,这样写就会写入一些没用的数据,导致出错。
\0为止,很有可能导致数组越界)。而strcat(a,Hello)则是将字符串Hello连接到a串的末尾。所以,在此场合下,字符数组a是必须先进行初始化的。否则就会出现不确定的情况,甚至因数组越界使用而导致程序崩溃。
相关问答
Q1: C语言读取任何文件都是这个乱码,求组
程序执行两边,肯定是代码问题。数据对计算机而言就是2进制,你看乱码说明显示的时候没有对应字符集,你把原文件打开看有乱码没。或者你文件有中文,你试试用全部英文和数字的文件读取。
从代码看,在Windows平台是有大概率会乱码,假如你的商品信息数组里存放了换行就一定会乱码。主要问题在文件的打开方式不对,fread, fwrite函数最好以二进制模式打开文件,即打开方式加上b,即(rb, wb)。
读取,文件是用a+方式打开,这读取数据,因为文件指针在最末的关系,读取出来的数据是空的,所以n永远为0。
Q2: c语言输出乱码,求解决方法
在Dev-C++中,如果出现了中文乱码的问题解决方法是修改编码设置、修改源代码文件的编码、使用其他编辑器或IDE。修改编码设置:在Dev-C++中,选择工具、环境选项、字符编码,然后选择UTF-8或GB2312等适合的编码方式。
改成读偶数个121。另外文件最好用宽字符的。就可以避免乱码了。
循环限定条件只到了s2字符串的\0结尾符之前,所以输出乱码了。将循环条件ka+b改为ka+b+1或者k=a+b就可以将s2字符串最末尾的\0结尾符也一同赋值到s字符串的最后,输出就可以正常显示。
字符串数组各字符单个赋值的话,在每串最后一个字符之后添加 \0,表示串结束了,输入时就没有多余的乱码了,因为gets()或scanf() 的%s都是主动在串结束后添加了 \0的。
都还没有初始化过。访问未曾初始化的内存,就会出现意想不到的输出结果(不应该这么做)所以修改for循环为 for(i =0; str[i] != \0; i++){ printf(XXX)} 就可以了~ 其中\0是字符串的结束符。
Q3: C语言运行的时候汉字全部乱码怎么回事?
这种情况多数是由于操作系统的语言选项不正确引起的。建议你查看一下控制面板中的区域和语言选项,特别是有关“非Unicode程序的语言”,一定要选择成“中文(简体,中国)”。然后重启电脑。
这个错误的原因是对union的定义不清楚,联合的意思是几个成员共用一个内存空间,但是每个时刻只能有一个成员占用。
常见的汉字编码有:GB,国标码 UNICODE,万国码 GBK,包含繁体 windows默认是GBK,但是很多程序都使用UTF编码,因此打印出来就是乱码。
关于你的 C 语言源程序输出中文乱码的问题,由于我的电脑上没有安装 VC 编程集成环境,故我无法对你的源程序的逐条语句进行单步跟踪某个变量的值、或者是在程序中设置断点进行跟踪。
我的运行没有问题啊,由此可见不是程序问题,解决方法1: 这个问题是因为语言设置不正确。
C语言读取字符乱码问题的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言读取字符串字符时出错、C语言读取字符乱码问题的信息别忘了在本站进行查找喔。







