我正在做一个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