Как проверить, есть ли у вас новая строка после getline()?

#c #getline

#c #getline

Вопрос:

Я думаю, возможно ли проверить, есть ли у вас новая строка после scanf чего-то? Потому getline() что это функция для чтения вашего ввода построчно. Если я хочу что-то ввести, то без нажатия «return» на клавиатуре. control D control DВместо этого я нажимаю. Как я должен знать, что у меня нет новой строки после ввода чего-либо?

Комментарии:

1. if ((*lineptr)[strlen(*lineptr)-1] == 'n') { /* yes, there is a newline */ }

2. @kaylum Я думаю, что *lineptr — это целое число, вы не можете использовать strlen

3. Почему ты так думаешь? Со справочной страницы getline : ssize_t getline(char **lineptr,..) . То есть, *lineptr имеет тип char * .

4. @kaylum Я использую getline(amp;lineptr, amp;len, stdin), который я инициализирую char *lineptr= NULL; size_t len = 0; ТАК что здесь мой lineptr — это адрес lineptr

5. Вот именно. И getline сохранит строку в *lineptr . Итак, как вы думаете, откуда берется целое число? Даже если вы введете число, getline оно сохранится как строка, а не целое число. getline не анализирует и не преобразует строковые данные (в отличие scanf , например, от). Похоже, у вас есть какое-то непонимание того, как getline это работает.