gpt4 book ai didi

c - 让这个功能做我想做的事我哪里出错了?

转载 作者:太空宇宙 更新时间:2023-11-04 03:39:10 25 4
gpt4 key购买 nike

我在我的 C 程序中编写了以下函数。该程序加载一个文本文件 (Les Miserables Vol. I) 以及另一个包含 20 个字符名称的文本文件。此函数的目的是逐行扫描整个文件,并计算 20 个名称中任何一个名称出现的次数。

NumOfNames = 20。

Names 是从 Names[1] - Names[20] 中存储的 20 个名称的数组。

MaxName 是一个全局整数变量,我想存储整个文件中名称出现的总数(它应该是数百甚至数千)。

编辑: 函数执行后,MaxName 的值为 4。我完全不知道哪里出错了,但似乎我在整个函数中犯了几个错误.一个似乎是它只执行了 for 循环的第一次迭代,即它只搜索 Name[1],但是名字在文件中出现了 196 次,所以它仍然无法正常工作只是名字。

void MaxNameAppearances()
{
char LineOfText[85];
char *TempName;
FILE *fpn = fopen(LesMisFilePath, "r+");

for(i = 1; i<=NumOfNames; i++)
{
while(fgets(LineOfText, sizeof(LineOfText), fpn))
{
TempName = strstr(LineOfText, Names[i]);

if(TempName != NULL)
{
MaxName++;
}
}
}

fclose(fpn);
}

最佳答案

我想代码的一个问题是它必须在每次 i 迭代时读取文件。尝试像这样重新排序循环:

while(fgets(LineOfText, sizeof(LineOfText), fpn))
{
for(i = 1; i<=NumOfNames; i++)
{
TempName = strstr(LineOfText, Names[i]);
if(TempName != NULL)
{
MaxName++;
}
}
}

这会读取一行,检查该行中所有名称的出现,然后继续下一行。

如果按照您的方式进行,您将已经到达 i == 1 的文件末尾。

关于c - 让这个功能做我想做的事我哪里出错了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30038333/

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