从包含 int 和 char 的输入字符串中提取单个 char 和单个 int?

时间:2021-01-11 16:50:50

标签: c

我正在创建我的第一个项目 - 国际象棋游戏。现在,我让程序要求用户输入一行,然后输入一列,如下所示:

White move.
column: F
row: 3

但是,我想让它更加无缝,使其看起来如下所示:

White move.
Input: F3

然后,它取'F' 并将其放入一个变量中,取'3' 并将其放入一个单独的变量中。我在其他语言中看到了此问题的解决方案,但在 C 中没有看到。有任何想法吗?

2 个答案:

答案 0 :(得分:1)

@limserhane 的回答非常好。我只是想让您知道,如果您在 %c 之前放置一个空格以丢弃缓冲区中可能存在的任何空间,这会更好,因为用户输入错误或您没有完全阅读以前的输入.

并且您还应该关注用户可能出现的错误,循环 scanf 直到您没有得到有效的输入。

while( scanf(" %c%d", &c, &i) != 2 || c < 'A' || c > 'Z' || i < 1 || i > 8 ) puts("Invalid coordinates, please try again.");

还要注意清除缓冲区,以防用户输入的内容超过您使用 %c%d

所能读取的内容
while( scanf(" %c%d", &c, &i) != 2 || c < 'A' || c > 'Z' || i < 1 || i > 8 ) {

    while ((c = getchar()) != '\n'); // clear the buffer

    puts("Invalid coordinates, please try again.");
}

答案 1 :(得分:0)

您可以使用基本的 scanf :

char c;
int i;
scanf("%c%d", &c, &i);
printf("column\t%c\nrow\t%d\n", c, i);
相关问题