c字符串的初始化问题:
char *str = (char*)malloc(sizeof(char)*10);
for(int i = 0; i < 7; i++)
str[i] = '#';
printf(“%s\n", str);
上面的代码中,只初始化了前7个位置,后面的3个没有初始化,所以输出后面的3个字符会随机初始化,会出现乱码现象。
正确的做法是在第8个字符的位置赋值为“\0”,这样才会只输出前7个字符。
而用scanf()给c字符串赋初值时不用在最后一个字符后加“\0”,因为scanf()会在最后一个字符后自动加上“\0”,但是当我们不用scanf()函数初始化时,必须要在后面加上“\0”。或者也可以用memset()函数将所有字符都初始化为‘ ’。
用字符数组时也一样。
c字符串的初始化问题
猜你喜欢
转载自blog.csdn.net/mch2869253130/article/details/85954474
今日推荐
周排行