首页 > 解决方案 > 从包含 int 和 char 的输入字符串中提取单个 char 和单个 int?

问题描述

我正在创建我的第一个项目——一个国际象棋游戏。现在,我让程序向用户询问一行和一列,如下所示:

White move.
column: F
row: 3

但是,我想让它更无缝一点,使它看起来像下面这样:

White move.
Input: F3

然后,它获取“F”并将其放入变量中,并获取“3”并将其放入单独的变量中。我看到了其他语言的解决方案,但我没有看到 C 语言的解决方案。有什么想法吗?

标签: c

解决方案


@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.");
}

推荐阅读