【发布时间】:2010-09-28 09:54:15
【问题描述】:
大家好,我目前正在尝试使用 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;
}
[结束编辑]
非常感谢,
乔纳森·蔡
【问题讨论】:
-
抱歉我这么无知,你说的字典顺序是什么意思? (以及在您的上下文中“更少”或“更多”是什么意思)
标签: c