scanf接受多个字符输入

时间:2019-06-10 11:15:35

标签: c char scanf

merge

我试图了解一下同时给两个字符输入的scanf是如何工作的。例如,在带有14的终端上运行此命令后,我曾期望将1分配给a1,将4分配给a2,但是它不起作用。例如,假设我必须将终端输入“ a4”分成两个单独的字符,我该怎么做?任何见解将不胜感激。

int main() {
 char a1, a2;
 printf("input values here: ");
 scanf(" %c%c ", &a1, &a2);
 printf("%c%c",a1,a2);
}

2 个答案:

答案 0 :(得分:4)

使用scanf,当它在格式字符串中看到一个空格时,它将读取(并丢弃/忽略)任意数量的空格字符。为此,scanf函数需要找到非空白字符的结尾。

scanf格式字符串一样,尾随空格的问题是要找到尾随空白序列的结尾,您必须至少输入一个额外的非空格字符。 / p>

您的问题(据我所知)的简单解决方案是在scanf格式的字符串中删除尾随空格。

答案 1 :(得分:-3)

实际上scanf要求输入回车来获取最终值,如果要获取单个字符,可以使用getche()getchar()之类的字符串函数,它将帮助您解决问题更好的方法。