我正在从 STDIN 读取一个字符串
unsigned char arr[200];
gets(arr);
// do something with arr
上面的代码将执行一次。
现在我想允许用户使用循环从 STDIN 输入多个字符串。如果用户不想输入更多字符串,还有一些退出选项。
喜欢:
while(CONDITION){
gets(arr);
// do something with arr
}
我怎样才能提出这样的条件?
我正在从 STDIN 读取一个字符串
unsigned char arr[200];
gets(arr);
// do something with arr
上面的代码将执行一次。
现在我想允许用户使用循环从 STDIN 输入多个字符串。如果用户不想输入更多字符串,还有一些退出选项。
喜欢:
while(CONDITION){
gets(arr);
// do something with arr
}
我怎样才能提出这样的条件?
不要使用gets()
,它很危险,请fgets()
改用。
fgets()
遇到文件结尾或发生读取错误时返回空指针。读取成功时返回一个非空指针。您可以将此返回值用作条件。
首先,使用fgets
代替gets
. 其次,如果您阅读链接引用,fgets
您会知道它返回一个非空指针,一切正常,因此您可以将其用作循环条件。
可能是这样的
while(1) {
gets(arr);
if(someExitCondition(arr))
break;
// do something with arr
}
ofcouse 使用 fgets 而不是 gets
你可以这样做,
while((fgets(arr, sizeof arr, stdin) != NULL))
{
// do something with arr
}
由于您是第一次使用fgets(),它的语法是,
char * fgets ( char * str, int num, FILE * stream );
str
是char *
您输入的存储位置。
num
是要读取的最大字符数
stream
是一个指向FILE
结构的指针,它从 fopen 返回。标准输入、标准输出和标准错误。