【发布时间】:2021-05-15 07:16:11
【问题描述】:
我正在编写一个简单的 C 程序,以使用 scanf() 从用户获取不同变量的输入,如下所示:
#include <stdio.h>
int main(){
int a, b;
scanf("%d %d", &a, &b);
printf("%d\n",a);
printf("%d\n",b);
return 0;
}
正如预期的那样,输出完全正常:
input: 10 23
output: 10
23
但后来我也尝试将输入作为字符串数组,如下(这里char c[2]是字符串数组):
#include <stdio.h>
int main(){
int a, b;
char c[2];
scanf("%d %d %s", &a, &b, c);
printf("%d\n",a);
printf("%d\n",b);
printf("%s\n",c);
return 0;
}
现在输出出乎意料:
input: 10 23 AM
output: 10
0
AM
在这里,可以看出为变量b 打印的值将变为0,而不是预期的23。字符串数组的输入如何改变变量b的值?
谁能帮忙弄清楚,我做错了什么(当然是愚蠢的错误)?强调文字
【问题讨论】:
-
char [2]太小,无法包含 2 个字母 + 1 个空终止符,请参阅链接副本。
标签: arrays c string scanf format-specifiers