Я пытаюсь получить многострочный текст от пользователя и обработать его построчно, но после вставки из буфера обмена в консоль необходимо дважды нажать клавишу ВВОД для отправки и продолжения. Ожидаемое поведение: CTRL + V, затем ENTER выполняет программу. Фактическое поведение: CTRL + V вставляет текст, ENTER начинает новую строку, а 2nd ENTER отправляет текст.
Функция, которая обрабатывает ввод:
char* getNewLine(bool* finish){
char* string;
string = malloc(sizeof(char));
string[0]='\0';
int c;
int i = 0;
while( (c = getchar()) != '\n'){
string = realloc(string, sizeof(char)*(i+2));
string[i] = (char)c;
string[i+1] = '\0';
i++;
}
if(i == 0){ //if last line was empty, stop while loop in main
*finish = true;
}
return string;
}
Основная программа:
int main(){
bool finish = false;
int line_count = 0; //Number of lines found
int good_count = 0; //Lines matches
char* line;
while(!finish){ //Read console line-by-line
line = getNewLine(&finish);
if(!finish){
if(checkString(line)){ //checkString returns true, if string matches some conditions
good_count++;
}
line_count++;
}
free(line);
}
printf("%d/%d\n", line_count, good_count);
return 0;
}