我正在使用 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;
}
Run Code Online (Sandbox Code Playgroud)
打印以下内容:
Harry Rosie RonaldRosie
Run Code Online (Sandbox Code Playgroud)
为什么“Rosie”会打印两次?
Ronald有 6 个字母,因此char player3[6]空终止符没有空格'\0'。
在您的情况下,它会打印Ronald内存中出现的任何内容,直到'\0'遇到a 为止。那恰好是Rosie。在找到'\0'.
一种解决方案(除了您如何初始化Harry和Rosie)是将元素数量增加 1 以为尾随提供空间'\0':
char player3[7] = "Ronald";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
65 次 |
| 最近记录: |