我正在读取STDIN的字符串
unsigned char arr[200];
gets(arr);
// do something with arr
上面的代码会执行一次。
现在我想允许用户使用循环从STDIN输入多个字符串。如果用户不想输入更多字符串,还可以退出一些选项。
像:
while(CONDITION){
gets(arr);
// do something with arr
}
我怎么能提出这样的条件?
答案 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 );
str
是char *
,您的输入存储在其中。
num
是要读取的最大字符数
stream
是指向fopen返回的FILE
结构的指针。
stdin,stdout和stderr也是如此。