从STDIN反复接受输入的退出条件

时间:2013-11-10 09:58:44

标签: c

我正在读取STDIN的字符串

    unsigned char arr[200];
    gets(arr);
  // do something with arr

上面的代码会执行一次。

现在我想允许用户使用循环从STDIN输入多个字符串。如果用户不想输入更多字符串,还可以退出一些选项。

像:

while(CONDITION){
   gets(arr);
   // do something with arr
}

我怎么能提出这样的条件?

4 个答案:

答案 0 :(得分:3)

请勿使用gets(),这很危险,请改用fgets()

fgets()在遇到文件结尾或发生读取错误时返回空指针。并且在成功读取时返回非空指针。您可以使用此返回值作为条件。

答案 1 :(得分:1)

首先,使用fgets代替gets。其次,如果您阅读fgets的链接引用,您将知道它返回一个非空指针,一切正常,因此您可以将其用作循环条件。

答案 2 :(得分:0)

可能是这样的

while(1) {
 gets(arr);
 if(someExitCondition(arr))
  break;
 // do something with arr
}

ofcouse使用fgets代替获取

答案 3 :(得分:0)

你可以这样做,

 while((fgets(arr, sizeof arr, stdin) != NULL))
 {  
     // do something with arr
 }

由于您是第一次使用fgets(),因此其语法为

char * fgets ( char * str, int num, FILE * stream );
  1. strchar *,您的输入存储在其中。

  2. num是要读取的最大字符数

  3. stream是指向fopen返回的FILE结构的指针。  stdin,stdout和stderr也是如此。