【问题标题】:scanf taking multiple char inputsscanf 接受多个字符输入
【发布时间】:2019-10-24 18:59:46
【问题描述】:
int main() {
 char a1, a2;
 printf("input values here: ");
 scanf(" %c%c ", &a1, &a2);
 printf("%c%c",a1,a2);
}

我试图了解 scanf 在一次输入两个字符时是如何工作的。例如,在使用 14 的终端中运行此程序后,我曾期望将 1 分配给 a1,将 4 分配给 a2,但它不起作用。鉴于我必须将例如“a4”的终端输入分成两个单独的字符,我将如何去做呢?任何见解将不胜感激。

./main
input values here: 14

【问题讨论】:

  • " %c%c " ==> " %c%c" 末尾没有空格
  • 是的,非常感谢。
  • 检查 return 消除所有谜团,并准确告诉您发生了哪些转换,哪些没有发生。 man 3 scanf 解释其余部分。

标签: c char scanf


【解决方案1】:

对于scanf,当它在格式字符串中看到空格时,它将读取(并丢弃/忽略)任意数量的空白字符。要使其正常工作,scanf 函数需要找到非空白字符的结尾。

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

解决您的问题的简单方法(我猜是这样)是删除scanf 格式字符串中的尾随空格。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-21
    • 2011-01-09
    相关资源
    最近更新 更多