【问题标题】:Is it possible to use scanf on the same variable twice? [duplicate]是否可以对同一个变量使用 scanf 两次? [复制]
【发布时间】:2020-10-29 04:14:43
【问题描述】:

是否可以提示用户再次输入一个字符并让新字符替换原来的字符?当我尝试这个时,它不允许我第二次输入字符。

#include <stdio.h>

int main(){ 
    char x;

    printf("enter value: ");
    scanf("%c", &x);
    
    printf("enter value: ");
    scanf("%c", &x);
}

【问题讨论】:

  • 不允许,因为你可能放了空格,尝试scanf(" %c", &amp;x)%c之前注意空格..
  • 成功了,谢谢。
  • 是的,这是可能的。确保清除之前输入可能留下的缓冲区。

标签: c


【解决方案1】:
#include<stdio.h>
int main(){ 
    char x='p';

    printf("enter value: ");
    scanf("%c", &x);
    printf("val is %c \n",x);
    printf("enter 2nd value: ");
    getchar();//flush the buffer
    scanf("%c", &x);
    printf("val is %c \n",x);
}

问题是你没有清除缓冲区 getchar 函数将清除它。

【讨论】:

  • 我试图理解为什么@kiran Biradar 的解决方案也有效 ...请参阅上面的评论以添加空格,格式为:" %c" 而不是"%c"。有什么想法吗?
  • @Daniel 格式字符串中的空格匹配任意数量的空白字符(空格、制表符、换行符),是首选解决方案。如果用户输入一个字符,按空格键,然后按 Enter,则此答案中的解决方案将不起作用。
  • @Daniel 在 %c 之前添加空格意味着跳过可选的空格,它可以是空格或换行。
  • @Daniel 有很多类似的问题已经被问过了。
  • getchar();//flush the buffer 过于自信 - 它假定以下字符是 '\n'。输入肯定不会被消耗,直到行尾 - 即 - 没有“刷新”。
猜你喜欢
  • 2021-11-05
  • 2014-09-07
  • 1970-01-01
  • 2021-11-26
  • 1970-01-01
  • 1970-01-01
  • 2021-12-18
  • 2018-07-07
  • 2018-10-17
相关资源
最近更新 更多