#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
это работает.