
正文
c语言输出数字乱码,c语言输出数字乱码怎么回事
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
我的C语言程序运行后为什么是乱码?
您好,您使用的是C语言,scanf程序中使用的为英文逗号,而输入中写的是中文逗号,所以会引起scanf报错,导致b为随机值。
GBK,包含繁体 windows默认是GBK,但是很多程序都使用UTF编码,因此打印出来就是乱码。
这是C语言习惯,务必养成!\0是字符串结束符,每当解释器看到这\0才会认为字符串终止,而你的程序明显没有字符串结束符,所以连同垃圾内存一起读出来了。“烫烫。”等就是垃圾内存。
用记事本打开它,应该是看不到数字的。不是说在记事本里输入字符1 2 3 4,然后保存成number.dat,程序就能正确读取的。二进制读取的时候fopen要写成 1 fp=fopen(number.dat,rb);rb表示binary:二进制读写。
输出出现乱码就是因为字符串结尾并没有结尾符\0。gets函数读入一行字符串时,会在最末尾自动加上\0结尾。
相关问答
Q1: 帮我看一下这个C语言程序错在哪了,对于不同数字,要么没有输出,要么是乱...
1、//这里因为是在函数中定义的 所以他会在函数调用完成后 消失!这就是乱码或暂缺的!printf (%s,s[a-1]);/*不注释掉该行,则出现三个连着的正确答案…… 这个不是正确的。
2、在函数 `C()` 中,变量 `f` 没有定义。需要将其定义为合适的值。 在函数 `E()` 中,`printf()` 函数的格式字符串中使用了 `%d` 来输出浮点数变量 `a1` 的值,应该改为 `%f`。
3、不知道呢为啥会有那些错误,NULL是已经定义过的,所以你不必再定义,然后你的两个错误是在某个语句后溜掉了“;”,我执行起来是没有这些错误的,不知道你运行的是不是我改过的上面这个程序。
4、int max(int x,int y);不能在函数内部声明函数,所以把这一句放到main函数的前面。
Q2: c语言输出乱码,求解决方法
1、在Dev-C++中,如果出现了中文乱码的问题解决方法是修改编码设置、修改源代码文件的编码、使用其他编辑器或IDE。修改编码设置:在Dev-C++中,选择工具、环境选项、字符编码,然后选择UTF-8或GB2312等适合的编码方式。
2、在文字设置那,把默认输入语言设为中文-美式键盘就不会再出现你这种情况了。
3、循环限定条件只到了s2字符串的\0结尾符之前,所以输出乱码了。将循环条件ka+b改为ka+b+1或者k=a+b就可以将s2字符串最末尾的\0结尾符也一同赋值到s字符串的最后,输出就可以正常显示。
4、putchar(s[u]);} 结尾处根本没有\0,所以s[u] !=\0就不会成立,他会一直把数组输出来完才结束。
5、代码不完整。可能是printf操作了中文了。
Q3: C语言fwrite写入文件后为什么出现乱码?
按数据定义结构的写入保持数据结构的长度,对于数值类型,再用文本方式打开时表现为乱码。例如float a=123467,写入文件后为4个字节,打开后不是文本表示的8个字节。写入数据用fprintf(fp,%s %s %d 这种方式。
记事本是显示ASCII码的,你写进去的东西除了a,鄂之外都不是ASCII码,所以就乱码了。
=1) 简单看了下,这行有问题,往文件里写的时候是把一个字符串写进去,stud[i]是一个struct,强行把它序列化的话,内存中的存储不是连续的,这样写就会写入一些没用的数据,导致出错。
乱码才是对的。你用的是二进制形式打开的文件,int类型占用4字节,你的代码就是把这4字节写入了文件。
关于c语言输出数字乱码和c语言输出数字乱码怎么回事的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






