Сравнение буфера (без символа новой строки) со строкой - PullRequest
0 голосов
/ 28 февраля 2011

Как сравнить буфер без символа новой строки со строкой?

strcmp (buffer, "change") не возвращает 0.

Ответы [ 3 ]

1 голос
/ 28 февраля 2011

strncmp - это функция, которую вы можете использовать для этого.

0 голосов
/ 01 марта 2011

Кроме предложенного strncmp, вы можете удалить '\n' из буфера перед сравнением ...

char buffer[WHATEVER];
if (!fgets(buffer, sizeof buffer, stdin)) /* uh oh */ exit(EXIT_FAILURE);

{ /* validate buffer and remove trailing '\n' */
    size_t buflen;
    buflen = strlen(buffer);
    if (!buflen) /* oh uh */ exit(EXIT_FAILURE);
    if (buffer[buflen - 1] != '\n') /* oh uh */ exit(EXIT_FAILURE);
    buffer[buflen - 1] = 0;
}

if (strcmp(buffer, "change") == 0) /* "change" found */;
0 голосов
/ 01 марта 2011

Из вашего поста я предполагаю, что у вас есть \ n в 'буфере', поэтому это не удастся

strcmp(buffer,"change")

Для сравнения вместо записи пишите

strncmp(buffer,"change",strlen("change")) 

или лучше

char keyword[] = "change";
strncmp(buffer,keyword,strlen(keyword)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...