Эй, ребята, я сейчас пытаюсь реализовать функцию, использующую C, которая принимает два имени файла в качестве аргументов командной строки и сравнивает их лексикографически.
Функция вернет -1, если содержимое первого файла меньше содержимого второго файла, 1, если содержимое второго файла меньше содержимого первого файла, и 0, если файлы тождественны.
Пожалуйста, дайте мне совет, как мне начать с этого.
[EDIT]
Привет, ребята, извините, если в этом вопросе есть неясная часть, поэтому я просто опубликую ссылку на вопрос здесь: Оригинальный вопрос . Дело в том, что это уникальное присваивание, поэтому мы должны делать это, используя только базовые свойства 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;
}
[END EDIT]
Большое спасибо,
Джонатан Чуа