c语言如果用字符串类型输出字符数组,字符数组最后一个是0,那么为啥会出现乱码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言如果用字符串类型输出字符数组,字符数组最后一个是0,那么为啥会出现乱码相关的知识,希望对你有一定的参考价值。
字符串是怎么确定他每个输出元素的类型的
因为你的字符串数组错误的引用了存在脏数据的内存要避免,就要初始化数组
memset(str,0,n)
将str字符串中前n个字节替换为0并返回str;
str为你定义的字符串,n为字符串容量,并非长度,即char a[20],不管你有几个字符,n为20为佳
加上头文件string.h
消息来源华夏联盟,亲 参考技术A 如果最后一个是0,或者'\0',不是'0',是不会输出乱码的;追问
怎么确定字符串每个输出单位的类型呢,有时候会出现汉字乱码,有时候就不会
参考技术B 可以把你的源代码贴出来 我们看看么?还有运行结果的图片本回答被提问者采纳c语言将字符输入至数组为啥不执行呢
这种情况通常发生在前面已经有了输入语句,而当前的scanf是在接收字符(即用%c控制输入)时。由于前面的输入语句(不一定是scanf)把最后输入的'\n'遗留在了输入缓冲区,而当前的scanf("%c",...);又会把'\n'当一个字符接收,又由于scanf在%c控制下只接收一个字符,所以就不能接收正式输入的字符了。解决这一问题的最简单办法是在接收字符的scanf的控制符"%c"中的%前加一个空格写成" %c",把前一次输入遗留在输入缓冲区里的所有广义空格(' '、'\t'、'\n'等)都吸收掉。在接收字符的scanf前加getchar()等的办法其实是有漏洞的——当缓冲区里只遗留了一个广义字符时可正常工作,若多于一个则同样出错。 参考技术A 因为在scanf("%d",&a);读取a的值以后,数字被读走了,但是输入的回车符还留在键盘缓冲区中。等到下一次读取字符或字符串时,就会读到这个残留的回车符。解决的办法是读走这个字符或清空键盘缓冲区(使用fflush(stdin);)本回答被提问者采纳以上是关于c语言如果用字符串类型输出字符数组,字符数组最后一个是0,那么为啥会出现乱码的主要内容,如果未能解决你的问题,请参考以下文章
C语言 为啥字符数组倒置输出,输入的最后一个字符没有输出 样例输入 7 ABCDEFG 样例输出 G F E D C B A