在我的应用程序中,我正在努力实现这样的目标:
我有:流量:
也许是这样的?(伪代码):
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;
}
或者他们是一个更好的方法?
或以这种方式做事是不好的做法? 如果是的话,请解释
答案 0 :(得分:1)
至少据我所知,读取和解析行输入并没有比读取和解析行输入更好的方法。
默认情况下,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! </homer> */
}
if (*c == terminatingcode || ferror(stdin))
break;
}
}
请注意fgets()可能会因为完全无辜的原因而“失败”,您需要熟悉feof()和ferror()以确保正确使用界面;我不确定我在上面代码中的使用是否与您想要/需要代码的内容一致。