为什么会出现这种重复的情况

#include <stdio.h>
int main()
{
    char arr1[] = "ddd";
    char arr2[] = { 'a', 'b', 'c' ,'f'};
    char arr3[] = { 'a', 'b', 'c' ,'d'};
    printf("%s\n", arr1);
    printf("%s\n", arr2);
    printf("%s\n", arr3);
    return 0;
}

img

为什么运行结果会出现重复的情况?

使用%s输出字符数组的时候直到遇到\0才会结束,arr2和arr3中没有设置\0元素。改成下面的就可以了:


#include <stdio.h>
int main()
{
    char arr1[] = "ddd";
    char arr2[] = { 'a', 'b', 'c' ,'f' ,'\0'}; //在最后增加'\0'
    char arr3[] = { 'a', 'b', 'c' ,'d' ,'\0'}; //在最后增加'\0'
    printf("%s\n", arr1);
    printf("%s\n", arr2);
    printf("%s\n", arr3);
    return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632