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);
}
答案 0 :(得分:4)
使用scanf
,当它在格式字符串中看到一个空格时,它将读取(并丢弃/忽略)任意数量的空格字符。为此,scanf
函数需要找到非空白字符的结尾。
与scanf
格式字符串一样,尾随空格的问题是要找到尾随空白序列的结尾,您必须至少输入一个额外的非空格字符。 / p>
您的问题(据我所知)的简单解决方案是在scanf
格式的字符串中删除尾随空格。
答案 1 :(得分:-3)
实际上scanf
要求输入回车来获取最终值,如果要获取单个字符,可以使用getche()
,getchar()
之类的字符串函数,它将帮助您解决问题更好的方法。