c等待stdin读?

在我的应用程序中,我试图实现这样的事情:

我有:

  • 数据0,数据1,数据2,…数据n。
  • 一些参数传递

流:

  1. 使用一些参数启动程序并将数据0写入stdin
  2. 程序根据传递的数据“数据0”和参数进行计算
  3. “等待”新的stdin和(清除旧的stdin,缓冲区和变量?)
  4. 当我输入数据1,数据2 ……等时重复1~2
  5. 当到达数据n时,终止(或者如果我输入一个中止代码到stdin告诉程序终止)。

也许是这样的?(伪代码):

int main(int argc, char *argv[]) { get parameters(); int fslen = data size char *c = (char *)malloc(fslen); fgets(c, fslen, stdin); while((c != null) || (c != Terminate code?)) { do calculations with int c; clear c; } return 0; } 

或者他们是一个更好的方法?

或者这样做是不好的做法? 如果是的话,请解释

至少就我所知,读取和解析行输入比读取和解析行输入更好。

默认情况下,stdin应该是阻塞的,因此您的“等待”标准应该自动处理。

但是,如果您要读取行,然后解析代码行,则需要两个循环:

 int main(int argc, char *argv[]) { /* initial parameter/buffer setup goes here */ while (fgets(buffer, bufferlen, stdin)) { for (c = buffer; *c != '\0' && *c != terminatingcode; c++) { /* calculations go here! ... they sure do!  */ } if (*c == terminatingcode || ferror(stdin)) break; } } 

请注意,fgets()可能会因为完全无辜的原因而“失败”,您需要熟悉feof()和ferror()以确保正确使用接口; 我不确定我在上面的代码中的使用是否与您想要/需要代码的内容一致。