0

当我的 scanf 找到一个空格/空白时,我需要它停止。

例如

如果我输入“E E”,我只需要 1 个“E”,所以它必须停在空格/空白处。

char end[] = "E";
char end1[] = "End";
char info[] = "";

while(run) {
 scanf("%s", &info);
 ...
 else if(strcmp(info, end) == 0 || strcmp(info, end1) == 0) {
    end_of_turn();
 }
 ...
}

现在这里的问题是,如果我输入“E E”,它将运行“end_of_turn”两次。

有谁知道为什么会这样?

编辑:

好的,我不能打破 while 循环,因为那会停止程序。

4

3 回答 3

2

用来break跳出while循环?打电话后end_of_turn()

goto或者,如果您不想跳出循环,请使用语句。

您还可以从输入流中获取所有字符,然后使用以下代码丢弃它们:while(getchar() != '\n') ;

于 2013-02-04T23:01:30.243 回答
0

看起来可以使用%[格式说明符仅匹配某些字符。要排除空格,我想你会使用%[^ ].

于 2013-02-04T23:56:26.363 回答
-1

循环遍历存储在info搜索空格字符中的字符串' ',如果找到,则将字符串的其余部分设置为\0

于 2013-02-04T23:15:04.580 回答