我如何比较收到的答案?

时间:2012-07-21 09:48:16

标签: c comparison

我有一个用C编写的简单回显服务器,如果收到quit

,我想停止服务器
    int n;
    char buffer[256];
    while(strcmp(buffer,"quit") != 0)
    {
        n = read(sock,buffer,255);
        if (n < 0)
        {
        perror("ERROR reading from socket");
        exit(1);
        }

        printf("Here is the message: %s\n",buffer);
        printf("%d-%d\n", sizeof(buffer), strcmp(buffer,"quit"));

        n = write(sock,"I got your message",18);
        if (n < 0) 
        {
        perror("ERROR writing to socket");
        exit(1);
        }
  }

如何将收到的缓冲区与字符串进行比较?

3 个答案:

答案 0 :(得分:2)

缓冲区可能不是0终止,因此使用“字符串”比较函数是错误的。您应该尝试使用strncmpmemcmp

此外,在while条件下,您在实际阅读buffer之前进行了测试。

答案 1 :(得分:0)

除了其他人所说的,你的程序的行为是未定义的:在进入循环时,你是在buffer初始化之前阅读。

答案 2 :(得分:0)

我想通了

void strip(char *s) {
    char *p2 = s;
    while(*s != '\0') {
        if(*s != '\t' && *s != '\n' && *s != '\r') {
                *p2++ = *s++;
        } else {
                ++s;
        }
    }
    *p2 = '\0';
}

How to remove \n or \t from a given string in C?