C - 套接字网络 - 字符串不会产生相等



我一直在用C进行套接字联网,用于一个将从客户端获取密码以在服务器上进行验证的应用程序。我已经设置好了所有内容,套接字也进行了通信,但当我发送一个字符串并使用strcmp()时,尽管打印出来时字符串是相同的,但不会返回0(我认为这表明字符串是一样的),如下所示:

请注意,客户端和服务器端是独立的程序,在我的机器上通过localhost。

/*Client Side */
char password[64] = {0};
fgets(password, 64, stdin);
write(sockfd, password, 64);

/*Server Side */
char password[64] = "password";
char password_buffer[64];
read(newsockfd, password_buffer, 64);
if(strcmp(password, password_buffer) != 0)
    {
    printf("Password Incorrectn");
    {
else 
    {
    printf("Password correctn");
    }

如有任何帮助,我们将不胜感激。我突然想到可能涉及bzero或memset的使用,尽管我不确定这些是如何涉及的。

fgets(password, 64, stdin);可能会在字符串末尾添加一个尾随的换行符(n)。从fgets之后的客户端字符串中删除它,或者在服务器端的比较字符串末尾添加一个

要从客户端字符串中删除尾随的新行,请使用例如:
password[strcspn(password, "rn")] = 0;

最新更新