求大神解释c语言问题。 划斜杠的语句 while(getchar()!='\n') continue;是什么意思?能起到什么作用呢?

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define tsize 45
typedef struct film
{
char title[tsize];
int rating;
struct film * next;
}film;
int main(void)
{
film * head=NULL;
film * prev,* current;
char input[tsize];
puts("enter the first movie title:");
while (gets(input)!=NULL && input[0]!='\0')
{
current=(film *)malloc(sizeof(film));
if(head==NULL)
head=current;
else
prev->next=current;
current->next=NULL;
strcpy(current->title,input);
puts("enter your rating:");
scanf("%d",¤t->rating);
while(getchar()!='\n')
continue; //求解释这句语句是什么意思o(>_<)o ~~
puts("enter next movie title:");
prev=current;

}
if(head==NULL)
printf("NO data entered.");
else
printf("here is the movie list\n");
current=head;
while(current!=NULL)
{
printf("movie:%s,rating:%d\n",current->title,current->rating);
current=current->next;
}
return 0;
}

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

请问我把这语句去掉以后,为什么这个程序就不循环了呢?
执行后变成这样了
enter the first movie title:
aaa
enter your rating:
10
enter next movie title:
here is the movie list
movie:aaa,rating:10
Press any key to continue

追答

因为 gets 读取到 换行符后就结束读取,也就是gets(input)=null ,即退出循环了,这正好印证了我说的

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-08-06
continue就是跳过本次循环中剩下的内容,直接进入下一轮循环

计算机二级考试C语言知识点归纳
continue:是继续的意思,(继续循环运算), 但是要结束本次循环,就是循环体内剩下的语句 不再执行,跳到循环开始,然后判断循环条件, 进行新一轮的循环。 3)嵌套循环 就是有循环里面还有循环,这种比较复杂,要一层 一层一步一步耐心的计算,一般记住两层是处理 二维数组的。 4) while((c=getchar())!=’\\n’)...

C语言中的问题不明白为什么 新人麻烦详细解释一下谢谢
这里scanf指定逗号为输入的分隔符号。所以输入时数字和字符之间必须有逗号。scanf不指定分隔符时,默认以空白字符(空格、回车、制表符)为分隔符。PS:如果写%d%c不指定分隔符号。由于第二个变量是字符型,输入时中间不要加空格符,否则会将空白符号做为字符接收。

...= getch()) == '\\\\')这里判断反斜杠是什么意思
反斜杠的意思,一个反斜杠是转义符,会将后面'转义,两个表示一个反斜杠

是反斜杠n与反斜杠r有什么区别?
\\n表示的是换行,这个符号是可以显示的。\\r表示回车,一般用来判读输入完毕,是无法显示的

C语言中n%m是什么意思
'\\n'是转义字符,表示换行符。同类的转义字符还有'\\\\'(表示字符 \\),'\\r'(表示回车符)等 3 用法示例,用来判断输入终止(通常按下回车键时即代表程序终止)include<stdio.h>int main(){printf("input a word: ");char a = getchar();while (a != '\\n'){putchar(a);a = get...

...帮忙解答,追加悬赏喔。麻烦把各个选项都解释解释最好了:)_百度知 ...
这个union是表示,一块储存空间用short,long,char,三种类型来描述,所以c[0] 与i[0]一样的。这个程序是要打印s->c[0],printf("%x\\n", s ->c[0])这句里的%x表示打印的数字是十六进制的。由于c[0]里面放的是0x39,所以这里打印的正好是39.第三题:与第二题类似,注意这里求的是them的...

C语言关于'\\n'问题: 为啥我打 putchar('\\n'); 他并没有出现换行的效果...
你的回车键不相当于“\\n”,你按下回车键的时候,把它转换为char型,也就是13号字符(根据ascII字符表),而13号字符就是“\\r”

急!!历年国家计算机二级c语言笔试真题答案。
C )字符斜杠:‘\\’ D)字符串:"\\007" (16)表达式a+=a-=a=9的值是 A)9 B)_9 C)18 D)0 (17)若变量已正确定义,在if (W)printf(“%d\\n,k”);中,以下不可替代W的是 A)a<>b+c B)ch=getchar() C)a==b+c D)a++ (18)有以下程序 #include<stdio.h> main() {int a=1,b=0; if...

相似回答