C语言编程中while (getchar()!='\n')在语句中起到什么作用?

供稿:hz-xin.com     日期:2025-01-21
C语言中while((ch=getchar())!="\n")的作用是什么?怎么理解?

代码有问题,应该是 while ((ch = getchar()) != '
') 目的是不断读取用户输入的字符,当读取到的字符为回车符的时候停止循环。
getchar是读入函数的一种。它从标准输入里读取下一个字符,相当于getc(stdin)。返回类型为int型,为用户输入的ASCII码或EOF。


扩展资料:
基本的优先级需要记住:
优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。指针最优,单目运算优于双目运算。如正负号。先算术运算,后移位运算,最后位运算。请特别注意:1 << 3 + 2 & 7等价于 (1 << (3 + 2))&7.逻辑运算最后结合。

循环直到接收到换行,循环本身不做其他事情,作用就是接收掉由上一句的scanf带来的换行符,防止while循环中的gets接收到错误的换行符

while (getchar()!='
') ;  表示循环读入字符,直到读到回车符结束循环。


我们在输入一个数据时,一般都会按回车来确认输入结束,可是scanf()函数对最后的回车确认符并不丢弃,而是存储在缓存中,这样如果,下一个操作是读字符操作,则会将缓存中的回车符误读为实际数据,而造成程序运行异常。因此,在确认输入一个数据后,要回车来确认时,可通过while (getchar()!='
') ;来清除缓存中的垃圾数据。

这个语句,还可以做到清除输入多余的字符,如:

char ch[11]; //最多能存储10个字符
getline( ch, 10 ); //输入10个字符,可是用户有可能输入10个以上的字符,于是可用上面的语句来清除缓存的数据。
while (getchar()!='
') ;
这样,后续的读数据操作,就不会受这里的输入影响了。


表示如果没有读到换行符(也就是回车键),那么继续循环。

用C语言:编写一个计算机的串行端口程序
SendFileName(fname);do{ ch=(int)getc(fp);if(ferror(fp)){ printf("Error reading file.\\n");break;} s=ch%16; \/*取文件中一个字节的低4位*\/ Send(s);s=ch\/16; \/*取文件中一个字节的高4位*\/ Send(s);}while(!feof(fp));s=46; \/*发送文件结束信息*\/ ...

20分c语言文件结束EOF(-1)
EOF在windows对应的按键是CTRL+Z键,在linux系统上对应的按键是CTRL+D。比如下面的代码:include <stdio.h>int main(){int c;while ((c = getchar()) != EOF)putchar(c);return 0;} 运行程序按CTRL+Z键,即会显示“^Z",再次按回车键即可退出程序。

c语言中文件内容如何倒序输出
rb"))==NULL){ printf("Can't open file...");exit(1);} fseek(fp,0L,SEEK_END);last=ftell(fp);for(count=1L;count<=last;count++){ fseek(fp,-count,SEEK_END);ch=getc(fp);if(ch!=CNTL_Z&&ch!='\\r'){ putchar(ch);} putchar('\\n');} fclose(fp);return 0;} ...

初学者。C语言文件操作,输入内容后ctrl+z回车后就没反应了。求助_百度...
(fp=fopen(filename,"w"))==NULL){printf("file open error!\\n");exit(1);}else printf("succeed in building the new file \\" %s \\"\\n",filename);printf("enter the contents:"); \/*输入内容并存储*\/while((c=getchar())!=EOF) \/*键盘文件结束标志:...

C语言中getc怎么用?
在C语言中,用函数getc(fgetc)从文件读取字符。getc、fgetc用法相同。getc的调用形式:ch=getc(fp);此处的fp是文件指针;函数功能是从文件指针指向的文件读入一个字符,并把它作为函数值返回给字符型变量ch。include <stdio.h> int main(){ char c;c = getc(stdin);printf("%c",c);return 0...

C语言fopen函数如何执行的问题?急急急!!!
while ((ch = getchar()) != '\\n'){ name[i] = ch;i++;} name[i] = '\\0'; \/\/ 这里错了, 是 i不是i+1 if ((fp = fopen(name, "r")) == NULL){ printf("Can't open %s\\n", name);exit(EXIT_FAILURE);} while ((ch = getc(fp)) != EOF){ putc(ch, ...

C语言下提供了哪些有关文件的操作?
while(ch!='@'){ fputc(ch,fpout); ch=getchar(); } fclose(fpout);} 2.调用getc(或fgetc)函数输入一个字符 调用形式为:ch=getc(pf);功能是:从pf指定的文件中读如一个字符,并把它作为函数值返回.例如:把一个已存在磁盘上的file_1.dat文本文件中的内容,原样输出到终端屏幕上.include vo...

请问:关于C语言中getc(stdin) 读取键盘缓冲区的问题?
getc(stdin)每次只能从缓冲区读取一个 字符,但是遇到回车符就结束了。连续从缓冲区读取循环此段代码。同样以回车结束。#include<stdio.h>void main(void){while(1){ char a;a=getc(stdin);printf("%c",a);}} 这是编译器内部定义的函数,他在头文件里的定义可以再函数名上击右键选getc定义查看...

C语言中怎样从文件中删除数据,尽量有代码,谢谢啊~
rewind(fp);\/\/是位置指针重新返回文件的开头,此函数没有返回值 if((fp=fopen(filename,"r"))==NULL)\/\/以读的方式打开文件 { printf("cannot open file !!!\\n");exit(0);} while(!feof(fp)){ s=getc(fp);putchar(s);} return 0;} 测试:请输入文件的名称:hello 请输入字符直至...

在C语言中,怎么样由键盘输出一个不限定长度的字符串?
char *arr = (char *)malloc(sizeof(char) * STRLEN); \/\/ 保存字符串,初始长度设定为STRLEN char input; \/\/ 保存一个从输入流传入的字符 int strSize = STRLEN; \/\/ 计算arr字符串能存储的最大长度 int strLength = 0; \/\/ 存储arr已经存储的字符串长度 while ((input = getc(stdin)) != '\\n')...