Удаление запаздывания символа новой строки от fgets () вход

Я пытаюсь получить некоторые данные от пользователя и отправить их в другую функцию в gcc. Код - что-то вроде этого.

printf("Enter your Name: ");
if (!(fgets(Name, sizeof Name, stdin) != NULL)) {
    fprintf(stderr, "Error reading Name.\n");
    exit(1);
}

Однако я нахожу, что это имеет новую строку \n символ в конце. Таким образом, если я вхожу John это заканчивает тем, что отправило John\n. Как я удаляю это \n и отправьте соответствующую строку.

208
задан Jonathan Leffler 13 March 2015 в 20:23
поделиться

2 ответа

Немного уродливый способ:

char *pos;
if ((pos=strchr(Name, '\n')) != NULL)
    *pos = '\0';
else
    /* input too long for buffer, flag error */

Немного странный способ:

strtok(Name, "\n");

Обратите внимание, что функция strtok не работает как ожидается, если пользователь вводит пустую строку (т.е. нажимает только Enter). Он оставляет неизменным символ \ n .

Конечно, есть и другие.

133
ответ дан 23 November 2019 в 04:39
поделиться
size_t ln = strlen(name) - 1;
if (*name && name[ln] == '\n') 
    name[ln] = '\0';
82
ответ дан 23 November 2019 в 04:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: