c初学者问题

时间:2022-09-07 12:01:44
#include "Stdio.h"

main()
{
    char c;
    while ((c=getchar())!='.')
   {if (c>='a'&&c<='z')
        c=c-32;
       printf ("%c",c);
          getch();
    }
}
这段代码是输入一句话将小写字母输出为大写
运行结果是输入一句话,然后回车后在按一个键输出一个字符
也就是按键后getchar不给c赋值,也不运行printf,直到按回车后才把输入的数一个一个的赋值给C,不知道我理解的对不对
那c语言不能实时输出吗??必须回车才输入给程序??

7 个解决方案

#1


 getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).当用户键入回车之后,getchar才开始从stdin流中每次读入一个字符.getchar函数的返回值是用户输入的第一个字符的ASCII码,如出错返回-1,且将用户输入的字符回显到屏幕.如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取.也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键.

#2


没听明白 

#3


回车之后,输入流才开始被处理,这是默认的。

#4


你搜索下getchar跟getch的区别吧.

#5


那如果改成  while ((c=getch())!='.') 
会直接显示大写字母,回车之后又回到一行的开头了
为什么回车不换行??

#6


c初学者问题

#7


c语言不能实时输出吗??

不行, 用那段程序执行后, 按回车 输出。

规定这样。

#1


 getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).当用户键入回车之后,getchar才开始从stdin流中每次读入一个字符.getchar函数的返回值是用户输入的第一个字符的ASCII码,如出错返回-1,且将用户输入的字符回显到屏幕.如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取.也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键.

#2


没听明白 

#3


回车之后,输入流才开始被处理,这是默认的。

#4


你搜索下getchar跟getch的区别吧.

#5


那如果改成  while ((c=getch())!='.') 
会直接显示大写字母,回车之后又回到一行的开头了
为什么回车不换行??

#6


c初学者问题

#7


c语言不能实时输出吗??

不行, 用那段程序执行后, 按回车 输出。

规定这样。