2016-02-12 78 views
0

如何让此循环重复,直到用户输入-2,-1,0或正数?C - 重复提示,直到有效的用户输入

int main(int argc, char argv[]) { 
    char n[3]; 
    char line[LINESIZE]; 
    fgets(line, sizeof(line), stdin); 
    sscanf(line, "%s", n); 
    do { 
     if (n == 0) { 
      printf("DISPLAYING ALL RECORDS.\n"); 
     append(); 
     } else if (n > 0) { 
      printf("MODIFYING RECORD %s", n); 
     } else if (n < 0) { 
      printf("APPENDING RECORD %s", n); 
     } else if (n == -2) { 
      printf("QUITTING."); 
     } else { 
      return 1; 
     } 
    } while (1); 

return 0; 
} 
+1

int n; char line [LINESIZE];do {fgets(line,sizeof(line),stdin); } while(sscanf(line,“%d”,n)!= 1 || n <-2);' –

回答

0

使用do/while循环:

do 
{ 
    // code to be looped (ask the input value) 
} while (n < -2) 

// here you can check the values as in your code 
+0

这不起作用,因为它只是打印修改记录。 –

+0

我认为你的做(1)循环是错误的,它会导致一个永无止境的循环。如果你想不断地输入输入并对它做出反应,把(1)循环放在整个身体周围,然后在我的答案中添加while循环。 –

0

我没有得到什么,你到底要与你的代码,但

while(n<(-2)) 
{ 
     // Your code 
     // again take n as an input 
} 

做应该做的任务要求你的问题。

+0

这不保留循环它只是打印修改记录然后结束 –

+0

好吧,基本上你想要的是循环重复没有采取任何输入,除非用户给出的值大于等于-2 –

0

您需要使用kbhit()getch()在循环运行时接受输入。 kbhit函数在那一刻检查是否存在击键,并且getch函数用于检索该击键的数据,如果kbhit获得击键,则返回非零值,如果不是,则返回0 0