8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

程序没有在 scanf('%c', &ch) 行停止,为什么?

SingleNegationElimination 2月前

42 0

程序没有在 scanf(\'%c\', &ch) 行停止。为什么会发生这种情况,有人可以向我解释一下吗?#include #包括结构列表 { char val; 结构

程序不会在 scanf(\'%c\', &ch) 行停止。为什么会发生这种情况,有人可以向我解释一下吗

#include<stdlib.h>
#include<stdio.h>

struct list {
   char val;
   struct list * next;
};

typedef struct list item;

void main()
{
    char ch;
    int num;

    printf("Enter [1] if you want to use linked list or [2] for realloc\n");  
    scanf("%d", &num);
    if(num == 2)
    {
        scanf("%c", &ch); 
        printf("%c", ch);
    }
}
帖子版权声明 1、本帖标题:程序没有在 scanf('%c', &ch) 行停止,为什么?
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由SingleNegationElimination在本站《loops》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 假设您在读取 ​​num 时输入 2。实际输入流将是 2\n(\n 是换行符)。2 进入 num,剩下的 \n 进入 ch。为避免这种情况,请在格式说明符中添加空格。

    scanf(" %c", &ch); 
    

    这将忽略任何空格、换行符或制表符。

  • visc 2月前 0 只看Ta
    引用 3

    这背后的原因是 \n Enter scanf 时上一个 留下的会留给下一个 的读取 scanf 。当语句

    scanf("%c", &ch);   
    

    然后执行它读取 \n 前一个留下的 scanf .
    要消除这个空白, \n 您可以在说明符前使用空格 %c 。说明符前的空格 %c 可以消除任意数量的空白字符。

    scanf(" %c", &ch);   
           ^ a space
    
返回
作者最近主题: