回 帖 发 新 帖 刷新版面

主题:一道c 语言题目的编译问题

#include"stdio.h"
char change()
{
    char let;
    while(1)
    {
       printf("please enter a letter:");
       let=getchar();
       if(let<=122&&let>=97)
          {
         putchar(let-32);
         putchar('\n');break;
           }
        else
          printf("error!\n");
     }

     return 0;
}
这个函数是求将一个小写字母输入 输出大写字母的   请问大家我在运行的时候为什么在输入一个不在97到122的数的时候就会循环两次please enter a letter:error!
请大家帮我分析一下

回复列表 (共8个回复)

沙发

在getchar();前加一个fflush(stdin);
看看这贴:
http://www.programfan.com/club/showbbs.asp?id=221058

板凳

那是什么原因引起的呢?

3 楼

那么这个函数fflush(stdin)是什么意思呢?

4 楼

不懂,我菜鸟!

5 楼

主函数在哪呢

6 楼

fflush (stdin);
这个的意思是清除内存用的,
你最开始getchar的时候接受的字符,但是你一回车的时候,就把回车也当成了一个字符来存储在内存中了,所以要用这个来清除一下,我也是个新手,我知道这个的意思和作用罢了,你这个程序我怎么没有看到main()啊,我记得老师告诉说是程序都是从main()这里开始的,不明白,谁告诉我下

7 楼


怎么连main函数也没哦???

8 楼

#include"stdio.h"
main()
{
    char let;
    printf("please enter a letter:");
    let=getchar();
      while(1)
    { if(let<=122&&let>=97)
        {
         putchar(let-32);
         putchar('\n');break;
         }
        else
          printf("error!\n");
     }

     return 0;
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册