雨中漫步~ 发表于 2021-10-4 18:52:46

字符串在数组中越界储存问题

#include <stdio.h> //abcdefghijklmn14   abcdefg7
#include <string.h>

#define M 5

int main()
{
        char str1 = {0};
        char ch;
        int i = 0;
       
        printf("请输入字符串:");
        while ((ch = getchar()) != '\n')
        {
                str1 = ch;
        }
        str1 = '\0';

//        gets("%s", str1);
       
        printf("str1的长度是:%d\n", strlen(str1));
        printf("sizeof(str1) = %d\n", sizeof(str1));
       
        printf("str1 = %s\n", str1);
       
        return 0;
}

请问两个图示同样是数组的越界储存,为什么一个可以一个不行?当存入一维数组存入字符个数小于数组容量时,是否需要在字符串末尾手动添加终止符‘\0’?

wp231957 发表于 2021-10-6 09:19:06

越界是不被允许的,就没有研究的意义
就如同犯罪一样,我们就不要去研究哪种犯罪方式好,都是要坐牢的

雨中漫步~ 发表于 2021-10-6 10:05:34

wp231957 发表于 2021-10-6 09:19
越界是不被允许的,就没有研究的意义
就如同犯罪一样,我们就不要去研究哪种犯罪方式好,都是要坐牢的

哈哈,好的
页: [1]
查看完整版本: 字符串在数组中越界储存问题