gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 11:09:31 26 4
gpt4 key购买 nike

我一直在用 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 Incorrect\n");
{
else
{
printf("Password correct\n");
}

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

最佳答案

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

要从客户端字符串中删除尾随的换行符,请使用例如这个:
密码[strcspn(密码, "\r\n")] = 0;

关于C - 套接字网络 - 字符串不会产生相等性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36704493/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com