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

从包含int和char的输入字符串中提取单个字符和单个int?,c,C,我正在创建我的第一个项目-一个国际象棋游戏。现在,我让程序要求用户先输入一行,然后输入一列,如下所示: White move. column: F row: 3 但是,我想让它更无缝一点,因此它看起来如下所示: White move. Input: F3 然后,它取'F'并将其放入一个变量中,取'3'并将其放入一个单独的变量中。我在其他语言中看到了解决方案,但在C语言中看不到。有什么想法吗?您可以使用基本的scanf: @limserhane的答案非常好。我只是想让您知道,如果您在%c之前放

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

White move.
column: F
row: 3
但是,我想让它更无缝一点,因此它看起来如下所示:

White move.
Input: F3
然后,它取'F'并将其放入一个变量中,取'3'并将其放入一个单独的变量中。我在其他语言中看到了解决方案,但在C语言中看不到。有什么想法吗?

您可以使用基本的scanf:


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

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

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

您需要编写代码来实现这一点;你没有出现根据什么是张贴试图这样做。非常感谢!我把它分成两个单独的scanf函数,一个用于int,一个用于char,我不知道你能做到这一点。非常感谢。注意:当扫描%c%d、&c、&i!=2 || ... 文件末尾有一个无限循环。@chux,你为什么这么说?当用户输入例如A 1不是文件结束条件时,它会停止。当stdin关闭时,scanf不断返回EOF,因此是一个无限循环。但是用户需要输入文件的结尾。没有人告诉他最好不要假设用户输入是预期的。健壮的代码处理各种用户输入,检测问题并报告问题。这取决于您希望代码具有多大的弹性。
while( scanf(" %c%d", &c, &i) != 2 || c < 'A' || c > 'Z' || i < 1 || i > 8 ) puts("Invalid coordinates, please try again.");
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.");
}