Я пытаюсь создать программу на языке C, которая будет использоваться в качестве простого интерпретатора командной строки для системы UNIX. Я использую fgets() для чтения пользовательского ввода, который затем сохраняет входные данные в буфере для анализа. Если только вход пользователя вводится, я хотел бы переиздать приглашение. Есть ли способ определить, был ли ключ возврата единственным ключом, введенным в приглашении? Ниже приведен фрагмент кода, я пытался до сих пор:определение новой строки в fgets
for (;;) {
printf("$prompt$ ");
fflush(stdout);
fgets(commandBuffer, 200, stdin);
/* remove trailing newline:*/
ln = strlen(commandLine) - 1;
if(commandLine[ln] == '\n')
commandLine[ln] = '\0';
/* attempt to handle if user input is ONLY return key:*/
if(commandLine[0] == '\n')
continue;
Для (редкого) случая 'fgets()', возвращающего строку нулевой длины, код будет терпеть неудачу. – alk
Это можно исправить, проверив sizeof. – JFA
@JFA Пожалуйста, расскажите, как помогает «проверка размера». – chux