gpt4 book ai didi

c - getchar 返回意外字符

转载 作者:太空宇宙 更新时间:2023-11-04 01:11:43 26 4
gpt4 key购买 nike

我尝试编译这段代码:

#include <stdio.h>

void print(FILE *a)
{
int main();
int count=20;
int c;
int stop=0;
char answer;

while(!stop){
while((c=getc(a))!=EOF){
fprintf(stdout,"%c",c);
if(c=='\n'){
count--;
if(!count){
printf("do you want continue:y=for continue/q=for quit");
fflush(stdin);
answer=getchar();
if(answer=='y' || answer=='Y')
count=20;
else if(answer=='Q' || answer=='q'){
printf("you quit this program,press any key and hit the enter to close");
stop=1;
break;
}
else{
printf("argument is unacceptable,rolling back action");
main();
}
}
}
}
if(c==EOF)
stop=1;
}
}
void halt()/*do nothing just for halt and waiting for input*/
{
int a;

scanf("%d",&a);
}
int main()
{
FILE *in,*fopen();
char name1[25];
int a;

printf("enter the name of the file you want to show:");
scanf("%24s",name1);
in=fopen(name1,"r");
if(in==NULL){
printf("the files doesnt exist or it is in another directory, try to enter again\n");
main();
}
else
print(in);

fclose(in);
halt();

return 0;
}

真正重要的是这部分:

if(!count){
printf("do you want continue:y=for continue/q=for quit");
fflush(stdin);
answer=getchar();
if(answer=='y' || answer=='Y')
count=20;
else if(answer=='Q' || answer=='q'){
printf("you quit this program,press any key and hit the enter to close");
stop=1;
break;
}
else{
printf("argument is unacceptable,rolling back action");
main();
}
}

该程序预计会显示一个文件的 20 行内容,但是当我在终端中运行它时,当涉及到 if-else 部分时,它往往会执行 else放入 answervariable.did I do something wrong

注意:我已经用不同的编译器(例如 lcc-win32)尝试过这段代码,它工作正常。

最佳答案

不确定问题出在哪里,这是基于您的代码的配对向下 q&d 示例,并且按预期工作。

#include <stdio.h>

int main(int argc, char * argv[])
{
char answer;

while(1) {
printf("\ndo you want continue:y=for continue/q=for quit: ");
fflush(stdin);
answer=getchar();

if(answer=='y' || answer=='Y')
puts("y/Y entered");
else if(answer=='Q' || answer=='q'){
puts("q/Q entered");
break;
}
else
puts("Something other than q/y entered.");
}
}

不幸的是,我现在时间紧迫,所以我无法检查你的版本和我的版本之间是否有任何实质性差异..我不记得任何东西。

这是在 Ubuntu 下用 gcc 4.4.3 测试的。

看看这是否适合您。

关于c - getchar 返回意外字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11254666/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com