使用函数对数组进行赋值

img


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'