c/c++语言开发共享代码没有使用fgets达到语句?

我编写了使用fgets函数的代码,该函数具有调用代码中其他函数的多个条件,即aMethod和bMethod。

int main(void) { char buffer[1024]; while (fgets(buffer, 1024, stdin)) { if ((strcasecmp(buffer,"a")) == 0) { aMethod(); } if ((strcasecmp(buffer, "b")) == 0) { bMethod(); } } } 

我不确定为什么它没有达到if语句。 任何帮助都会很棒,谢谢。

    如有疑问,请将其打印出来:

     int main(void) { char buffer[1024]; while (fgets(buffer, 1024, stdin)) { fprintf(stderr, "BUFFER is [%s]n", buffer); /* <==== */ if ((strcasecmp(buffer,"a")) == 0) { aMethod(); } if ((strcasecmp(buffer, "b")) == 0) { bMethod(); } } } 

    你会发现很多这样的错误。

    您忘记了fgets()将换行符留在缓冲区中(除非输入的行太长)。 因此,输入字符串无法与您要比较的任何字符串进行比较。

    此外,标准C中没有strcasecmp()这样的函数。它是POSIX函数。

    你忘了fgetsn字符消耗在缓冲区中。 通过使用string.h的cool函数strcspn()其剥离。 在if语句之前添加以下内容:

     buffer[strcspn(buffer,"n")] = 0; 

    或者,您可以使用熟悉的strlen()函数:

     size_t len = strlen(buffer); if(len > 0 && buffer[len-1] == 'n') buffer[len-1] = 0; 

      以上就是c/c++开发分享代码没有使用fgets达到语句?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/550189.html

      (0)
      上一篇 2021年1月14日
      下一篇 2021年1月14日

      精彩推荐