【发布时间】:2021-05-25 23:44:20
【问题描述】:
我正在使用 C 字符串,如下面的程序:
#include <stdio.h>
int main(void){
char *player1 = "Harry";
char player2[] = "Rosie";
char player3[6] = "Ronald";
printf("%s %s %s\n", player1, player2, player3);
return 0;
}
打印以下内容:
Harry Rosie RonaldRosie
为什么“Rosie”会打印两次?
【问题讨论】:
-
因为 C 中的字符串总是以 nul 字节结尾,你的
player3数组应该是 7 个字节而不是 6 个。 -
您忘记在
Ronald文字中为终止符留出空间,因此继续打印到以下变量,这里恰好是Rosie。 -
必须是
char player3[7] = "Ronald";才能持有终止的'\0'。 -
欢迎来到未定义行为的奇妙世界
-
player3不包含字符串