1.初学者很在学习C语言时,经常会出现以下情况:
即出现了很多“烫烫烫”字,出现了打印字符串时乱码的情况,令初学者头痛。
2 要避免这种小问题出现,我们需要了解以下几个小知识。
(1)‘\0’ 是什么?
‘\0’是一个转义字符,它表示一个字符串的结束。pritnf函数打印字符串或者字符时,只有碰到了‘\0’才会停止打印。
(2)为什么以下这中直接打印字符串的形式不会出现乱码的情况?
#include<stdio.h>
void main()
{
char str1[] = "abcde";
printf("%s\n", str1);
return 0;
}
因为在C语言中默认在字符串的末尾含有一个\0字符,所以在打印字符串“abcde”时,程序打印完字符e后,碰到\0字符即结束打印。通过编译器的监视窗口,我们很明显的可以看到如下图内容
也就是在内存空间中,我们这种形式只打印str1数组中的字符串,不会打印任何多余的东西,故不会出现乱码情况。
(3)当然了,我们初学者有时候也会编写以下代码:
#include<stdio.h>
void main()
{
char str2[] = {'a','b','c','d','e'};
printf("%s\n", str2);
return 0;
}
以上代码运行后就会出现乱码 很明显就是因为里面没有一个'\0'字符串结束标志符,导致它在打印时将字符‘e’后面的也会一直打印出来,直到碰到下一个‘\0’字符,但是它并不知道后面具体是什么,因此才会乱码。
(4)在上面基础上我们应该添加一个‘\0’字符 ,就不会出现乱码情况了,比如下面代码
#include<stdio.h>
int main()
{
char atr[] = {'a','b','c','d','e','\0'};
printf("%s\n",str);
return 0;
}
这样执行之后就不会再出现乱码情况了