Я преобразовал получает в Fgets, но код входит в бесконечный цикл - PullRequest
0 голосов
/ 01 мая 2020
 int count_line=0;
       char note[500];
           // printf("enter line %d: ",count_line);
           while( fgets(note,500,stdin)){

             if (strcmp(note,"END")==0){
               // printf("not almayi bitirdi\n");
                break;
            }
            entry[count_entry].notes = (char **) realloc(entry[count_entry].notes, (count_line+1)*sizeof(char *)); // yeni satir gelebilir diye yer actim
            entry[count_entry].notes[count_line] = (char *) malloc(500*sizeof(char)); // yeni actigim satirda 500 karakterlik yer actim
            strcpy(entry[count_entry].notes[count_line],note);  // 0
            entry[count_entry].numberOfLines ++; // 1
                count_line++;
           }

       count_entry++;
    }

Компилятор не поддерживает gets, поэтому я использовал fgets, но теперь, когда я ввел END, существует бесконечное значение l oop, оно не нарушает значение l oop.

Как это исправить?

1 Ответ

0 голосов
/ 01 мая 2020

fgets() возвращает новую строку, если ввод был завершен нажатием клавиши ввода.

Таким образом, код должен либо отключить новую строку

    note[strcspn(note, "\n")] = '\0'; 

, либо проверить для "END\n".

...