`
guanjh
  • 浏览: 232881 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

getchar()的问题

    博客分类:
  • C
 
阅读更多

#include <stdio.h>

int main(){
 int i=0,menuitem;
 char ch;
 printf("Please Choose Menu's Item...\n");

 while (!(menuitem==1 || menuitem==2 || menuitem==3))
 {
  if (menuitem==0) break;
   
  if(i++>0)
   printf("Notice: Input Number(0-3),OK?\n");

  ch = getchar();

  menuitem = (int)ch - 48;
 }

 return menuitem;
}

上面这段程序,输入一个字符,然后回车,会连续出现两次Notice: Input Number(0-3),OK?,这可是一个bug,那么造成这个Bug的原因是什么呢,是因为getchar()一次只读一个字符,所以还有一个回车符没有读,所以才会这样。修改办法如下:

。。。。。
  if(i++>0)
   printf("Notice: Input Number(0-3),OK?\n");

  ch = getchar();
  getchar();

  menuitem = (int)ch - 48;

。。。。。。

分享到:
评论

相关推荐

    SCANF和GETCHAR的区别,GETCHAR的妙用

    在C语言中,处理输入输出的函数很多,其中scanf和getchar都是常用的输入函数,但它们的用途和特点各不...通过合理使用getchar的妙用,可以有效解决一些在使用scanf时可能遇到的输入问题,提升程序的健壮性和用户体验。

    getchar和getch的区别

    在使用getchar、getch和getche函数时,需要注意回车符的吸收问题。这三个函数都可能会遇到回车符的问题,因此在使用时需要小心处理。 getchar、getch和getche函数都是C语言中的输入函数,但是它们之间存在着一些...

    C语言程序设计(第2版)-2期 常见问题5-4 使用getchar函数读取字符出现错误.pdf

    为了解决这个问题,我们需要清除键盘缓冲区中的回车换行符,确保下一次`getchar()`调用能正确地读取新输入的字符。【示例2】提供了一个解决方案,即在每次读取用户输入字符后,额外调用一次`getchar()`来消耗掉缓冲...

    getch()和getchar()

    getch()和getchar()的比较 getch()和getchar()都是从键盘读取一个字符的函数,但是它们之间存在一些关键的区别。 getchar()函数 getchar()函数是从键盘读取一个字符的函数,它的返回值是用户输入的第一个字符的...

    getchar函数和EOF总结

    ### getchar函数和EOF详解 #### 一、getchar函数简介 在C语言中,`getchar()`函数主要用于从标准输入(通常为键盘)读取单个字符。此函数定义于`stdio.h`头文件中,并且它返回的是一个整型值,代表所读取的字符的...

    C语言中getchar和gets区别

    ### C语言中getchar和gets的区别 在C语言编程中,`getchar()`与`gets()`是两个常用函数,它们分别用于从标准输入流(通常是键盘)读取单个字符和整个字符串。虽然这两个函数都能从键盘接收输入,但它们的工作方式、...

    单字符IO getchar()和putchar().7z

    在C语言中,单字符输入输出是编程中最基础的操作之一,`getchar()` 和 `putchar()` 函数就是实现这一功能的关键。这两个函数主要用于处理单个字符的输入和输出,对于初学者来说是非常重要的知识点。 `getchar()` ...

    C语言中的getchar和putchar的使用方法

    C语言中的getchar和putchar的使用方法 getchar是以行为单位进行存取的。 当用getchar进行输入时,如果输入的第一个字符为有效字符(即输入是文件结束符EOF,Windows下为组合键Ctrl+Z, Unix/Linux下为组合键Ctrl+D)...

    scanf(), getchar(), 以及gets()函数注意点

    scanf(), getchar(), 和gets()函数都是标准输入函数,它们在C语言中使用非常频繁,但是在实际应用中却常常因为使用不当而导致问题。下面我们将深入剖析scanf()、getchar()和gets()函数的异同,并探讨它们在读取字符...

    getchar与getch的区别

    getchar与getch的区别,详细剖析了这两者之间的区别,深入浅出,容易理解。推荐!!!

    分支循环**-getchar

    ** getchar getchar getchar getchar getchar getchar

    Zzuli 1086 getchar.docx

    getchar 函数详解 getchar 函数是 C 语言中一个基本的输入函数,它允许用户从标准输入设备(通常是键盘)中读取单个字符。下面是对 getchar 函数的详细介绍。 getchar 函数的原理 getchar 函数的实现是通过宏来...

    C++深入了解scanf()getchar()和gets()等函数

    然而,scanf()函数也存在一些问题。例如,在程序1中,我们使用scanf()函数来读取两个字符,但是程序的执行结果却与预期不同。分析发现,这是因为scanf()函数从输入流缓冲区中读取数据,而不是从键盘读取数据。当用户...

    getchar的功能和用法

    getchar是C语言中的一个函数,用于从缓冲区中读取一个字符。它的基本功能是从标准输入设备(通常是键盘)读取一个字符,并将其返回。 当使用getchar时,需要注意以下几点: 如果缓冲区中没有字符可供读取,getchar...

    tggc-getchar

    C lessions of RiceYuan(CodeBock) getchar getchar getchar getchar getchar

    C语言getchar详细解释和示例

    在C语言中,`getchar()` 是一个非常基础且实用的函数,用于从标准输入(通常是键盘)读取单个字符。它定义在 `&lt;stdio.h&gt;` 标准输入输出库中,因此在使用 `getchar()` 之前,需要包含这个头文件。下面我们将详细讨论 ...

    workflow-getchar的功能和用法

    getchar的功能和用法 getchar的功能和用法 getchar的功能和用法 getchar的功能和用法 getchar的功能和用法

    getchar是C语言中的一个标准库函数.docx

    getchar是C语言中的一个标准库函数,以下是关于getchar的详细介绍: 一、功能 getchar函数的主要功能是从标准输入(通常是键盘)读取一个字符,并将其作为int类型返回。这个函数通常用于从键盘获取用户输入。 二、...

    基于C语言EOF与getchar()的使用详解

    以前在看K&R的The C Programming Language(SecondEdition)第1.5节的字符输入/输出,被getchar()和EOF所迷惑了。可能主要还是由于没有搞清楚getchar()的工作原理和EOF的用法。因此,感觉很有必要总结一下,不然,很多...

Global site tag (gtag.js) - Google Analytics