缓冲区与字符串比较(没有换行符)

发布于 2024-10-19 13:27:47 字数 68 浏览 2 评论 0原文

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

strcmp(buffer,"change") 不返回 0。

How to compare a buffer without new line character with a string?

strcmp(buffer,"change") is not returning 0.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

贩梦商人 2024-10-26 13:27:47

strncmp 是您可以用来执行此操作的函数。

strncmp is the function you can use to do that.

新雨望断虹 2024-10-26 13:27:47

从你的帖子中我假设你在“缓冲区”中有一个\n,所以这会失败

strcmp(buffer,"change")

为了比较写入

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

或更好

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

From your post I assume you have a \n in 'buffer' so this will fail

strcmp(buffer,"change")

In order to compare write instead

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

or better

char keyword[] = "change";
strncmp(buffer,keyword,strlen(keyword)
涫野音 2024-10-26 13:27:47

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

Other than the suggested strncmp, you can remove the '\n' from buffer before comparing ...

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 */;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文