嘿傢伙,我目前正在試圖實現一個函數使用C,將兩個文件名作爲命令行參數並按字典順序進行比較。如何比較2個文件按字母順序使用C
如果第一個文件的內容小於第二個文件的內容,那麼函數將返回-1,如果第二個文件的內容小於第一個文件的內容,則返回1,如果文件爲0是相同的。
請給我一些建議,我應該如何開始這個。
[編輯]
嘿,夥計們,如果有在問題有任何不清楚的一部分,所以我就張貼鏈接到的問題在這裏遺憾:Original question。這是一個uni任務,所以我們希望只使用基本的C屬性,可能只包括stdio.h,stdlib.h和string.h。對不起,造成的麻煩。另外這裏是我已經有的代碼,現在我的主要問題是該函數不知道file1.txt(參見該鏈接)是否具有比file2.txt長的第一行,但實際上按字典順序較少:
int filecmp(char firstFile[], char secondFile[])
{
int similarity = 0;
FILE *file1 = fopen(firstFile, "r");
FILE *file2 = fopen(secondFile, "r");
char line1[BUFSIZ];
char line2[BUFSIZ];
while (similarity == 0)
{
if (fgets(line1, sizeof line1, file1) != NULL)
{
if (fgets(line2, sizeof line2, file2) != NULL)
{
int length;
if (strlen(line1) > strlen(line2))
{
length = strlen(line1);
}
else
{
length = strlen(line2);
}
for (int i = 0; i < length; i++)
{
if (line1[i] < line2[i]) similarity = -1;
if (line1[i] > line2[i]) similarity = 1;
}
}
else
{
similarity = 1; //As file2 is empty
}
}
else
{
if (fgets(line2, sizeof line2, file2) != NULL)
{
similarity = -1; // As file1 is empty
}
else break;
}
}
fclose(file1);
fclose(file2);
return similarity;
}
[編輯完]
非常感謝,
喬納森·蔡
對不起,很無知,你是什麼意思按字典? (在你的上下文中「less」或「more」意味着什麼) – Matthieu 2010-09-28 10:13:35