gpt4 book ai didi

c++ - 无法将文本文件中的行读入字符串

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:58:47 26 4
gpt4 key购买 nike

我有一个看起来像这样的文本文件

用户1|密码1
用户2|密码2

我有一个字符串,比如“user1|password1”。我需要将文本文件的每一行与该字符串进行比较。

    FILE *fp;
fp = fopen("user_info_file.txt", "r");
while(fgets(str, 10, fp)!=NULL){
n = write(newsockfd, "STR:", 4);
n = write(newsockfd, str, 15);}

然后继续strcmp。我使用 write 函数是因为我让服务器将其写入客户端。

我只是将 15 作为随机值(它在范围内)以查看是否正在读取任何文本。但是当它打印 str 时,well str 不包含任何内容。它只是打印为“STR:”,然后我在下一行得到提示。

请告诉我如何将user_info_file.txt(至少第一行)中的数据读入str。我已经花了几个小时在这上面,但我似乎无法理解。新手,请多多包涵。

编辑:基本上我正在创建一个 IM 应用程序。用户通过输入他们的用户名和密码进行注册,该用户名和密码被发送到服务器,服务器以我上面写的形式将其存储在 user_info_file 中。用户注册后,他们需要能够登录。他们输入用户名和密码,我再次将其发送到服务器。然后我需要服务器将此字符串与 user_info_file 中的现有条目进行比较以验证登录。所以我需要服务器检查 user_info_file 的每一行并将其与用户输入的内容进行比较。

所以我有

char* str = new char[256];
FILE *fp;
fp = fopen("user_info_file.txt", "r");
while(fgets(str, 10, fp)!=NULL){
n = write(newsockfd, "STR:", 4);
n = write(newsockfd, str, 15);}
if(strcmp(buffer, str) == 0)
n = write(newsockfd, "Logged in", 9);
else
n = write(newsockfd, "No such username", 16);

基本上,我试图将 user_info_file 的每一行读入 str。然后我在每个读取行之后将 str 与缓冲区进行比较。缓冲区存储客户端发送的登录信息。如果匹配,则登录应该成功。

但是,当我编写 str 时,它不会打印任何内容。 15 是它应该写的 str 中的字符数,对吗?因此,即使数字是 5,它也应该至少打印“user1”或“user2”或 user_info_file 某行的前 5 个字符。但看起来根本没有任何内容从文件读入 str。

希望我已经说清楚了。我能做些什么?我已经无计可施了。

最佳答案

我认为在您的情况下使用 fgets 函数逐字符读取文件并不方便。我建议您使用 fscanf,它为您提供更多机会:比如同时读取不同格式的值。这里我得到了一些代码片段,以演示如何使用 fscanf 从文件中获取所需信息:

int main(void)
{
char str[256];
char checkLogin[256];
char checkPassword[256];
FILE *fp = fopen("user_info_file.txt", "r");
/*while(fgets(str, 10, fp)!=NULL){
n = write(newsockfd, "STR:", 4);
n = write(newsockfd, str, 15);}*/
int scanSucceed = 1;
do
{
scanSucceed = fscanf(fp,"%s|%s ", checkLogin, checkPassword);
if (!strcmp(checkLogin, buffer))
{
// in case if password for that login match
if (!strcmp(checkPassword, password))
{
ValidLogin = true;
scanSucceed = -1; // exit from while loop
}
}
}
while(scanSucceed != -1); // while string was read
}

关于c++ - 无法将文本文件中的行读入字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13392283/

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