【发布时间】:2024-01-07 16:17:01
【问题描述】:
有人可以向我解释为什么“card_T2”甚至在“printf("Type in flop card 2: \n");”之前就开始扫描吗?显示在屏幕上?
char card_T1[2];
char card_T2[2];
printf("Type in flop card 1: \n");
scanf("%c",&card_T1[0]); //Card value
scanf("%c",&card_T1[1]); //Card categorie
printf("%c\n",card_T1[0]);
printf("%c",card_T1[1]);
printf("Type in flop card 2: \n");
scanf("%c",&card_T2[0]); //Card value
scanf("%c",&card_T2[1]); //Card categorie
printf("%c\n",card_T2[0]);
printf("%c",card_T2[1]);
return 0;
我希望第一个 scanf 扫描类似“2k”的内容,但是如果我在输入后按 Enter,则输入会被扫描到“card_T2[0]”。我不明白为什么。
如果我输入类似“456”的内容然后按回车键,card_T1[0] = 4、card_T1[1] = 5、card_T2[0] = 6 和 card_T2[1] = “空格”。
我不明白为什么第 3 和第 4 个 scanf 正在扫描,尽管 printf 从未显示。
感谢您的帮助
【问题讨论】:
-
scanf() 中的 %c 后不应使用空格
-
天哪,我的坏人已经删除了它们,问题仍然存在
-
好吧,您已经创建了一个字符数组,并且由于 c 中不存在字符串,因此当您在键盘中输入“456”然后回车时,您的 4 个 scanf 中的每一个都会被执行并存储字符 4、5、6 和分别输入。 “2k”也是如此
-
那我该怎么做呢?还是不可能
-
用 %2a 完成了,所以只有前两个对 scanf 很重要。 scanf("%2s",&card_T1);
标签: scanf