int csh(char arr[11], int n, char s)
{
int i;
for (i = 0; i < n; i++)
{
arr[i] = s;
}
}
int main()
{
char arr1[11] = { 0 };
csh(arr1, 11, '*');
}
为什么对arr进行逐个赋值时会发生这种情况
你要在arr数组最后一位留出一个字符来储存\0结束符将arr最后以为赋值为\0,不然会出现乱码
楼上说的对,给你一个解决办法,然后你再去慢慢理解:
37行的 char arr[11] 改成 char* arr
48行的 char arr[11] = {0} 改成 char arr[12] = {0}
这样做的目的是字符型数组多出一个一字节存储'\0'(其实'\0'就是数字0),保险起见最好在定义完数组之后将其初始化为全0,即memset(arr, 0 sizeof(arr)); (虽然 = {0}已经办到了,但有些编译器并没有全部初始化)
C语言中字符串必须以'\0'
结尾,csh()
函数对字符数组赋值时,没有在结尾添加'\0'