如何在阅读字符后清除新行\ n?

时间:2017-03-17 09:51:34

标签: c scanf getchar

我的主要功能是从函数返回main()后打印两次。

如果我输入'\n'并且我无法解决这个问题,我很确定当它返回主要时它会运行周期。

int main(){
char faz;

printf("What do you want to do?\nWrite C to create\nWrite R to read\nWrite U to edit\nWrite D to delete\nWrite E to exit the program\n>");
while((faz = getchar()) != EOF || faz != '\n')
{
  if(faz=='C') escreve();
  if(faz=='R') ler();
  if(faz=='U') editar();
  if(faz=='D') apagar();
  if(faz=='E') exit(1);
  else{ main();}
}

欢迎任何帮助,这是一个简单的图书馆管理程序。

1 个答案:

答案 0 :(得分:0)

你递归地调用你的main,这就是导致问题的原因,而你正在调用exit(1),它通常表示正常行为的错误。我建议你做以下事情:

int main(){
 char faz;
 bool done=false;
 printf("What do you want to do?\nWrite C to create\nWrite R to read\nWrite U to edit\nWrite D to delete\nWrite E to exit the program\n>");
 while(((faz = getchar()) != EOF || faz != '\n') && (!done))
 {
    done=true;
    if(faz=='C') escreve();
    if(faz=='R') ler();
    if(faz=='U') editar();
    if(faz=='D') apagar();
    if(faz=='E');
    else{ 
        done=false;
        printf("Please enter a valid input\n");
    }

 }
 return 0;
}