Сравнение двух текстовых файлов и вывод номера строки и позиции символа, где они отличаются - 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); }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Определяется функция main()
- Запускается функция clrscr(), которая очищает экран
- Объявляются необходимые переменные:
- ch, ch1 - символы, считываемые из файлов
- str - номер строки
- sim - счетчик символов в строке
- f, f1 - указатели на файлы
- Открываются файлы для чтения
- Запускается цикл while(), который считывает символы из файлов до конца
- В каждой итерации цикла сравниваются текущие символы из двух файлов
- Если символы не равны, выводится сообщение с номером строки, символом и счетчиком символов в строке
- Если символы равны, ничего не выводится
- После каждой строки, где символы не равны, увеличивается номер строки и сбрасывается счетчик символов
- Закрываются файлы
- Ждется нажатие клавиши для выхода из программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д