gpt4 book ai didi

C:查找 file1 中的用户名是否存在于包含电子邮件的 file2 中

转载 作者:太空宇宙 更新时间:2023-11-04 06:20:38 24 4
gpt4 key购买 nike

我需要从目录中清除非事件用户,为此我创建了以下函数。

我目前有两个列表:用户名 (file1) 和电子邮件地址 (file2) 位于各行。我需要查找 file1 的用户名是否存在于 file2 的电子邮件地址列表中。

这些是我考虑过的步骤:

  1. 从文件 1 中读取第一个用户名并删除换行符。
  2. 开始从文件 2 中读取电子邮件地址,在“@”符号处拆分并进行比较。
  3. 如果比较成功,在文件1中的用户名前插入“##”符号。 (如何实现?)

问题

(由@MC93 回答解决)我目前停留在第 2 步。我的程序只比较 file1 中的第一个用户名,然后停止比较。程序正常存在。

当前问题是第 3 步和改进!

此外,我是否应该阅读 file2 拆分单词并将它们存储在排序的平衡树中以提高性能。如果没有,任何其他建议。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main ( int argc, char** argv )
{
FILE * file1;
FILE * file2;
char * lineFromFile1 = NULL;
char * lineFromFile2 = NULL;
size_t len = 0;
ssize_t read1, read2;
char * token;
char * search = "@";

file1 = fopen("username.txt", "r");
file2 = fopen("email.txt", "r");
if ( file1 == NULL || file2 == NULL )
{
exit(EXIT_FAILURE);
}

while ((read1 = getline(&lineFromFile1, &len, file1)) != -1)
{
// Removing the newline character
if (lineFromFile1[strlen(lineFromFile1)-1] == '\n')
{
lineFromFile1[strlen(lineFromFile1)-1] = '\0';
}
printf("\nCurrent Username: %s \n", lineFromFile1);

// Reading email addresses and comparing
while ((read2 = getline(&lineFromFile2, &len, file2)) != -1)
{
// Splitting string at the '@' sign
token = strtok(lineFromFile2, search);

// Comparing strings
if ( strcmp(lineFromFile1, token) == 0)
{
printf("%s from File1 exists in File2 \n", lineFromFile1);
}

token = strtok(NULL, lineFromFile2);
token = NULL;
}
rewind(file2);
}

fclose(file1);
fclose(file2);
if ( lineFromFile1 || lineFromFile2 || token)
{
free(lineFromFile1);
free(lineFromFile2);
free(token);
}
}

文件内容

File1                            File2
username email
janedoe johndoe@google.com
johndoe janedoe@google.com

Current Username: janedoe 
janedoe from File1 exists in File2

Current Username: johndoe

RUN FINISHED; exit value 0; real time: 10ms; user: 0ms; system: 0ms

最佳答案

您在第二个 while 循环中读取了整个 File2,但是您需要将 File2 中的内部指针重置回文件的开头以进行后续搜索,您可以通过在第二个 while 之后添加此行来实现-循环:

rewind(file2);

或者如果您愿意:

fseek(file2, 0, SEEK_SET);

关于C:查找 file1 中的用户名是否存在于包含电子邮件的 file2 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35769810/

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