c语言输出字符串数组出现乱码

2025-04-16 06:23:30
推荐回答(4个)
回答1:

C语言字符串以'\0'结尾,如果不以该符号结尾则输出%s时会出错,程序一直往存放字符串的地址访问。而你的程序中并没有赋'\0'给那两个数组,所以会出现乱码。
没有出现乱码的数组是因为你初始化了,初始化时编译器会给它加上'\0'符号。

回答2:

字符串数组各字符单个赋值的话,你得主动在每串最后一个字符之后添加 '\0',表示串结束了,输入时就没有多余的乱码了,因为gets()或scanf() 的%s都是主动在串结束后添加了 '\0'的

回答3:

字符串是以/0结束为标志的,出现乱码的话,应该是没有找到正确的/0或者,你把字符串的/0重新赋值了。


char str[] = "Hello, World !";
str[strlen(str)] = 4;//此时,字符串就被破坏,会输出乱码。

回答4:

由于hello 只有5个字节,而str循环中输出的是50个字节的内容,剩下的45字节的空间,都还没有初始化过。
访问未曾初始化的内存,就会出现意想不到的输出结果(不应该这么做)

所以修改for循环为
for(i =0; str[i] != '\0'; i++){
printf(XXX)
}
就可以了~ 其中'\0'是字符串的结束符。