我正在创建我的第一个项目 - 国际象棋游戏。现在,我让程序要求用户输入一行,然后输入一列,如下所示:
White move.
column: F
row: 3
但是,我想让它更加无缝,使其看起来如下所示:
White move.
Input: F3
然后,它取'F' 并将其放入一个变量中,取'3' 并将其放入一个单独的变量中。我在其他语言中看到了此问题的解决方案,但在 C 中没有看到。有任何想法吗?
答案 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);