我已經在我的C程序中編寫了以下函數。該程序加載一個文本文件(Les Miserables Vol。I)以及另外20個字符名稱的文本文件。此功能的目的是逐行掃描整個文件,並計算20個名稱中任何一個出現的次數。我在哪裏得到這個函數去做我想做的事情?
NumOfNames
= 20
Names
是從Names[1]
存儲在20個名稱的數組 - Names[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);
}
你對代碼有什麼問題? –
你應該注意到數組在C中以索引0開頭,所以'Names'不是'Names [1] - Names [20]',而是'Names [0] - Names [19]'。 –
我知道,但我創建了數組,以便第一個元素爲空,然後下列元素保存名稱1-20。我的程序需要將名稱存儲在數組中的正確位置(名稱[1]中的第一個名字等)。 – KOB