【发布时间】:2021-12-31 05:47:13
【问题描述】:
我已将字符串 word 的大小设置为 5。我正在使用 scanf() 输入,格式说明符是 %s。虽然字符串的大小为 5,但如果我输入的字符串大于长度 5,它也会占用整个输入。为什么会这样?
这是我的 C 程序:
#include <stdio.h>
#include <string.h>
int main() {
char word[5];
printf("Enter word: ");
scanf("%s", word);
printf("Word: %s\n", word);
strlwr(word);
printf("To Lower: %s\n", word);
return 0;
}
如果我输入长度为 10 的 AbcDEfghij,但它会使用它并正确打印完整的字符串。我怎样才能防止这种情况?我不想接受大于大小的输入。
【问题讨论】:
-
“我怎样才能防止这种情况发生?” -->
scanf("%4s", word); -
这个小程序可能会打印出正确的结果,这取决于编译器和系统,但你可能会注意到最后的一个小故障,并且随着程序变得越来越大,它变得越来越糟糕,变得非常困难跟踪错误。