运行第一个代码时可能没有问题 但是,在我输入评论数据后,它将始终默认
char answer;
do{
printf("Do you want to add new comment?Y/N: ");
scanf("%c",&answer);
fflush(stdin);
switch(tolower(answer))
{
case 'y':
comment();
break;
case 'n':
main();
break;
default:
printf("Wrong choice !\n\n");
break;
}
}while(tolower(answer)!=='y'||'n');
有注释()的代码,我想这里的问题。
FILE*fp=fopen("comment.txt","a+");
if(fp == NULL)
{
printf("FIle not Found");
exit(1);
}
else
{
printf("Please enter your name: ");
gets(c.name);
printf("Pleas enter the date: ");
gets(c.date);
printf("Please enter the movie name: ");
gets(c.movie);
printf("Please enter your comment in 100 words:\n");
printf("Please press [Tab]and[Enter] to submit your comment\n");
scanf("%[^\t]",c.comment);
fprintf(fp,"%s %s\n%s\n%s\n\n",c.name,c.date,c.movie,c.comment);
}
fclose(fp);
有人可以帮助我吗?Thx !!
答案 0 :(得分:2)
尝试使用strlwr()
代替tolower()
答案 1 :(得分:2)
编译器为while条件提供了没有错误的信息吗?
也许你想写:
[...]GroupMenus?$filter=GroupId eq 2&$expand=Menu&$select=Menu
答案 2 :(得分:0)
在do{}while
内,您正在读取输入缓冲区,其中包含您输入的字符和输入键。你需要清楚这一点。试试scanf("%c%*c",&answer);
。它将从缓冲区读取额外的字符
答案 3 :(得分:0)
您的代码中存在一些问题。
scanf("%c",&answer);
第一次输入字符时,如果字符y
或n
,则在下一次迭代中,此scanf()
将读取迷路\n
(换行符) )输入缓冲区中的字符。要解决此问题,请在%
之前添加空格字符,如下所示:
scanf(" %c",&answer);
另一个问题是这句话:
while(tolower(answer)!=='y'||'n');
^^ ^
编译器必须在此声明中同时给出错误和警告。
将其更改为:
while(tolower(answer)=='y'||tolower(answer)=='n');
使用此循环运行直到用户输入y
或n
,对于任何其他字符,循环将退出。
如果您不希望循环退出y
或n
以外的任何输入字符,只需打印消息Wrong choice !
消息即可:
}while(tolower(answer)!='y'||tolower(answer)!='n');