【发布时间】:2012-08-31 15:47:02
【问题描述】:
编辑:对于我的班级,我必须使用scanf。所以推荐其他输入方式不是我正在寻找的解决方案(如果有涉及scanf的解决方案)。
如果我正在阅读小型项目(例如游戏)的用户输入。假设我问would you like to play? 这将接受yes 或no 的答案。所以我写了一些像这样的简单代码:
#include <stdio.h>
int main(void)
{
char string[3]; //The max number of letters for "yes".
printf("Would you like to play?");
scanf("%s", string);
}
所以这段代码应该只要求他们输入yes 或no。我将char array 的长度设置为3 的大小。这样它就足够容纳yes 和no。但是,如果有人输入无效输入,例如yesss,我知道如何在之后比较字符串以处理此类事件,但这不会在技术上/可能覆盖我已声明的其他局部变量,因为它会延伸到长度之外我的阵列?如果是这样,有没有办法处理这个限制3个输入字符或什么?如果不是,为什么/如何知道只输入 3 的大小?
【问题讨论】:
-
逐个字符进行可能更安全。我不确定 C 是否有任何东西可以为你做这件事。
-
你能解释一下怎么做吗?我会在“scanf”中做一堆“%c”的事情,然后我将如何将它们分配给数组的一个字符? [IE。我需要 &string[0] 什么的。另外,如果他们输入“否”,那么我只会使用 3 个“%c”中的 2 个。
-
自己处理任何长度需要一个数组,该数组可以在运行时更改大小,并在输入字符出现时插入字符,同时确保不溢出数组。幸运的是,
scanf似乎内置了该功能。
标签: c string scanf format-specifiers