我正在做一个C语言示例,并尝试了如下所示的示例。我以为它应该打印字符串Study Tonight strings,但是它给出了输出Study Tonight stringsStudyTonight,为什么呢?我认为即使char str[7]数组大小也正确。

#include <stdio.h>
#include <stdlib.h>

/*
 *
 */
int main() {
    char ch[20]="Study Tonight ";
    printf("%s",ch);
    char str[7]="strings";
    printf("%s",str);
    return (EXIT_SUCCESS);
}

最佳答案

这个:

char str[7]="strings";


这已经是不确定的行为,因为初始化程序是7个字符的文本加上1个空终止符,因此您需要8个字节的存储空间,而不是7个字节。请打开编译器警告,它将为您解决这些琐碎的问题。如果使用GCC或Clang,则如下所示:

gcc -Wall -Wextra -Werror

08-16 03:01