Я пытаюсь получить некоторые данные от пользователя и отправить их в другую функцию в 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
и отправьте соответствующую строку.
Немного уродливый способ:
char *pos;
if ((pos=strchr(Name, '\n')) != NULL)
*pos = '\0';
else
/* input too long for buffer, flag error */
Немного странный способ:
strtok(Name, "\n");
Обратите внимание, что функция strtok
не работает как ожидается, если пользователь вводит пустую строку (т.е. нажимает только Enter). Он оставляет неизменным символ \ n
.
Конечно, есть и другие.
size_t ln = strlen(name) - 1;
if (*name && name[ln] == '\n')
name[ln] = '\0';