繁体   English   中英

如何使用 fgets 从 c 中的标准输入读取多个输入

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM