На самом деле нет лучшего способа, по крайней мере, насколько я знаю, читать и анализировать ввод строки, чем читать и анализировать ввод строки.
По умолчанию 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 (), чтобы убедиться, что вы используете интерфейс правильно; Я не уверен, согласуется ли мое использование в приведенном выше коде с тем, что вы хотите / нуждаетесь в коде.