如何将没有换行符的缓冲区与字符串进行比较?
strcmp(缓冲区,“更改”)未返回0.
答案 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 */;