В дополнение к предоставлению char*
, который указывает на действительную память (также предложенную другими), getline2()
имеет и другие недостатки для адресации.
Неизвестный размер
getline2()
не знает, сколько символов можно сохранить. Предложите принять параметр размера и скорректировать код, чтобы предотвратить переполнение s
.
// void getline2(char *s)
void getline2(char *s, size_t sz)
Бесконечный цикл включен EOF
Когда stdin
закрывается или возникает редкая ошибка ввода, getchar()
может постоянно возвращать EOF
и никогда не выходить из цикла.
257 значения не вписываются в char
int fgetc()
возвращает значения в диапазоне unsigned char
и EOF
. Используйте int c;
и тестовый цикл для c != '\n' && c != EOF
// char c;
// while((c=getchar())!='\n')
int c;
while((c=getchar())!='\n' && c != EOF)