缓冲区比较(没有新行字符)和字符串

时间:2011-02-28 11:20:00

标签: c string comparison compare buffer

如何将没有换行符的缓冲区与字符串进行比较?

strcmp(缓冲区,“更改”)未返回0.

3 个答案:

答案 0 :(得分:1)

strncmp是您可以使用的功能。

答案 1 :(得分:0)

从你的帖子我假设你在'缓冲区'中有一个\ n因此这将失败

strcmp(buffer,"change")

为了比较写而不是

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

或更好

char keyword[] = "change";
strncmp(buffer,keyword,strlen(keyword)

答案 2 :(得分:0)

除了建议的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 */;