2012-07-21 72 views
0

我有C語言編寫的一個簡單的echo服務器,我想停止服務器,如果它收到quit我該如何比較recived answer?

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); 
     } 
    } 

我怎樣才能比較接收緩衝區的字符串?

+0

有什麼問題上面的代碼? – 2012-07-21 09:51:00

+0

我一直都想與1個 – 2012-07-21 09:52:45

+0

@iUngi:..你在哪裏得到1? – Ashe 2012-07-21 09:53:07

回答

2

很可能緩衝區不爲0,因此終止使用「串」比較函數是錯誤的。您應該嘗試使用strncmpmemcmp

此外,在while條件,實際上是讀成buffer之前測試。

0

除了別人怎麼說,你的程序的行爲是不明確:在進入循環,你是從buffer讀它的初始化之前。