Читать несколько строк


в одном из моих проектов C мне нужно прочитать несколько строк. Допустим, я ожидаю некоторый список инструкций, поэтому ввод может выглядеть следующим образом (конечно, я не знаю максимальную длину):

1. First do this...
2. After that...
...
n. Finish doing this...

Я хочу хранить эти данные где-нибудь (в файле,..), потому что впоследствии я хочу иметь возможность поиска во многих похожих списках и т. Д.

Мне пришла в голову идея использовать цикл и читать по одному символу за раз, и я сделал этот фрагмент кода (немного упрощенный):

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv){

char *stream;
int i=0;

stream = (char *)malloc(sizeof(char)); 
do{
    stream = (char *)realloc(stream,(i+1)*sizeof(char)); // Reallocating memory for next character
    stream[i] = getc(stdin); // Reading from stdin

    if( i>0 && stream[i-1]=='\n' && stream[i]== '\n' ) // Stop reading after hitting ENTER twice in a row
        break;
    i++;
}while(1); // Danger of infinite cycle - might add additional condition for 'i', but for the sake of question unnecessary

printf("%s\n", stream); // Print the result
free(stream); // And finally free the memory
return 0;
}

Этот фрагмент кода на самом деле работает, но мне кажется, что это довольно грязное решение (пользователь может захотеть добавить больше пустых строк '\n', чтобы сделать список более читабельным, но затем, после изменения условия 'if' там будет необходимость много раз нажимать на ENTER).

0 ответов

Другие вопросы по тегам