我正在编写一个程序,它打开两个文件进行读取:第一个文件包含 20 个名称,我将它们存储在表单的数组中Names[0] = John\0
。第二个文件是一个大文本文件,其中包含 20 个名称中每个名称的多次出现。
我需要我的程序扫描第二个文件的整个内容,每次找到其中一个名称时,Count
都会增加一个变量,以此类推,在程序完成后,文本中出现的所有名称的总数存储在Count
.
这是我的循环,它搜索并计算名称出现的次数:
char LineOfText[85];
char *TempName;
while(fgets(LineOfText, sizeof(LineOfText), fpn)){
for(a = 0; a<NumOfNames; a++){
TempName = strstr(LineOfText, Names[a]);
if(TempName != NULL){
Count++;
}
}
}
无论我做什么,这个循环都不会像我期望的那样工作,但我发现了问题所在(我认为!)。我的问题是数组中的每个名称都以 NULL 结尾,但是当名称出现在文本文件中时,它不是以 NULL 结尾的,除非它作为一行的最后一个单词出现。因此,此while
循环仅计算任何名称出现在行尾的次数,而不是任何名称在文本文件中任何位置出现的次数。如何调整这个循环来解决这个问题?
感谢您提前提供任何建议。