Сравнение двух текстовых файлов и вывод номера строки и позиции символа, где они отличаются - C (СИ)

Узнай цену своей работы

Формулировка задачи:

здравствуйте, уважаемые программисты!!!! пишу с надеждой, что вы мне поможете. дано такое задание: написать программу для сравнения двух текстовых файлов и выведения номеру строчки и позиции символа, где они отличаются. сижу уже третий день, перечитал кучу литературы, но так и не понял, как ето сделать!!!! код нужен на си. заранее спасибо!!!!!
ну помогите советом, пожалуйста!!!!!!!
вот мой вариант программы:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <conio.h>
#include<string.h>
int main ()
{
    FILE *fp,*fp2;
    char s,fname[10],fname2[10];
    puts("filename:");gets(fname);
    if((fp=fopen(fname,"r"))==NULL)
    {
       perror(fname);
       return 1;
     }
      puts("filename2:");gets(fname2);
    if((fp=fopen(fname2,"r"))==NULL)
    {
       perror(fname2);
       return 1;
     }

    FILE *tmpstream;
    char fname3[]="3.txt";  
     tmpstream=fopen(fname3,"w");
    
    fseek(fp,   0L, SEEK_END);
    int flen = ftell(fp);//ГўГЁГ§Г*Г*Г·Г*ºìî ê³ëüê³ñòü Г§Г*ГЇГЁГ±ВіГў
    fseek(fp,   0L, SEEK_SET);
    int k;
    for (int i = 0, k=0; i < flen; i++)
    {
        fread(&fp,sizeof(flen),flen-1,fp);

            if (strstr(fname,fname2)== NULL)    
            {
//Г§Г*ГЇГЁГ± Гў òèì÷Г*ñîâèé ГґГ*éë Г§Г*Г*éäåГ*îãî ïîëÿ
                fwrite(&tmpstream,sizeof(flen),1,tmpstream);
                k++;getch();
            }
    
    }
    fclose(fp);
    fclose(fp2);
    fclose(tmpstream);
return 0;
}
где ошибка????

Решение задачи: «Сравнение двух текстовых файлов и вывод номера строки и позиции символа, где они отличаются»

textual
Листинг программы
#include <conio.h>
#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
 
void main()
{
clrscr();
char ch, ch1;
int str=1;
int sim=0;
FILE *f;
f = fopen ("D:\\r.txt", "r");
FILE *f1;
f1 = fopen ("D:\\d.txt", "r");
while(ch!=EOF)
{
sim++;
ch = getc(f);
ch1 = getc(f1);
if (ch != ch1)
{
cout<<"Stroka: "<<str<<" "<<ch<<" = "<<sim<<" = "<<ch1<<endl;
}
else
{
 
}
if(ch == '\n'){str++; sim = 0;}
}
getch();
fclose(f);
fclose(f1);
}

Объяснение кода листинга программы

  1. Включаются необходимые заголовочные файлы
  2. Определяется функция main()
  3. Запускается функция clrscr(), которая очищает экран
  4. Объявляются необходимые переменные:
    • ch, ch1 - символы, считываемые из файлов
    • str - номер строки
    • sim - счетчик символов в строке
    • f, f1 - указатели на файлы
  5. Открываются файлы для чтения
  6. Запускается цикл while(), который считывает символы из файлов до конца
  7. В каждой итерации цикла сравниваются текущие символы из двух файлов
  8. Если символы не равны, выводится сообщение с номером строки, символом и счетчиком символов в строке
  9. Если символы равны, ничего не выводится
  10. После каждой строки, где символы не равны, увеличивается номер строки и сбрасывается счетчик символов
  11. Закрываются файлы
  12. Ждется нажатие клавиши для выхода из программы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.222 из 5
Похожие ответы