c字符串的初始化问题

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()函数将所有字符都初始化为‘ ’。

用字符数组时也一样。

猜你喜欢

转载自blog.csdn.net/mch2869253130/article/details/85954474
今日推荐