[英]how can I read multiple inputs from stdin in c using fgets
我尝试了这段代码并编写了另一个类似的代码来读取另一个输入,但是程序第二次读取了第一个标准输入和第二个标准输入(我也使用 fflush(stdin) 而不是 fseek() 但这也不起作用)
int BUFFERSIZE=100;
char input[BUFFERSIZE];
char *final=malloc(1);
while(fgets(input,BUFFERSIZE-1,stdin))
{
final=realloc(final,strlen(final)+strlen(input)+1);
strcat(final,input);
if(input[strlen(input)-1]=='\n') break;
}
sscanf(final,"%d",&opt);
free(final);
fseek(stdin,0,SEEK_END);
您没有在循环之前初始化final
缓冲区的内容。 所以第一个strlen(final)
和strcat(final, input)
正在读取一个未初始化的字符串,导致未定义的行为。
int BUFFERSIZE=100;
char input[BUFFERSIZE];
char *final=malloc(1);
*final = 0; // initialize to empty string
while(fgets(input,BUFFERSIZE-1,stdin))
{
final=realloc(final,strlen(final)+strlen(input)+1);
strcat(final,input);
if(input[strlen(input)-1]=='\n') break;
}
sscanf(final,"%d",&opt);
free(final);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.