/* СРАВНИТЬ ФАЙЛЫ . Даны два текстовых файла. Определить совпадают ли компоненты первого файла с компонентами второго файла.
Если нет то получить номер строки и позицию символа в этой строке начиная с которого файлы отличаются между собой .
В случае когда один из файлов повторяет начало другого более длинного файла ответом должно быть соответсвующее сообщение
с указанием имени длинного файла и номера первой строки которая не входит в короткий файл. */
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable : 4996)
#include
#include
#include
#include
#include
int main()
{
FILE *f1,*f2;
char buff1[180], buff2[180];
if ((f1 = fopen("f1.txt", "r")) == NULL)
{
printf("Error opening file ");
exit(0); /* корректный выход из программы в
случае ошибки открытия файла first.txt*/
}
if ((f2 = fopen("f2.txt", "r")) == NULL)
{
printf("Error opening file ");
getchar();
return 0;
}
fscanf(f1, "% s",buff1);
fscanf(f2, "% s", buff2);
fclose (f1); //закрытие файлов.
fclose ( f2);
for (int i = 0;i < strlen(buff1);i++)
{
if (buff1[i] != buff2[i])
{
printf("%d",i);
}
}
getchar();
return 0;
}
не понимаю в чем ошибка.... нужна помощь
Другие языки программирования и технологии
C++ Файлы. помогите чем можете . за хороший ответ подарю денюжку
int main()
{
const int LEN = 180;
FILE *f1,*f2;
char buff1[LEN], buff2[LEN];
if ((f1 = fopen("/home/eugen/qtProjecte/testProject/test/f1.txt", "r")) == NULL)
{
printf("Error opening file ");
exit(0); /* корректный выход из программы в
случае ошибки открытия файла first.txt*/
}
if ((f2 = fopen("/home/eugen/qtProjecte/testProject/test/f2.txt", "r")) == NULL)
{
printf("Error opening file ");
getchar();
return 0;
}
int line = 0;
while( fgets(buff1,LEN,f1) && fgets(buff2,LEN,f2) ) {
++line;
if(strcmp(buff1,buff2) != 0)
{
printf("Line %d of f1.txt %s\n differs from line %d in file f2.txt %s\n", line, buff1,line,buff2);
int i = 0;
int len = min(strlen(buff1), strlen(buff2));
for(; i < len; i++)
{
if (buff1[i] != buff2[i])
{
printf("Files f1.txt and f2.txt are different at line %d on line position %d", line, i);
break;
}
}
}
}
if(strlen(buff1))
{
printf("additional content of f1.txt:\n\n");
do
{
printf("Line %d: %s", line++, buff1);
}
while(fgets(buff1,LEN,f1));
}
if(fgets(buff2,LEN,f2))
{
printf("additional content of f2.txt:\n\n");
do
{
printf("Line %d: %s", line++, buff2);
}
while(fgets(buff2,LEN,f2));
}
fclose (f1); //закрытие файлов.
fclose (f2);
getchar();
return 0;
}
{
const int LEN = 180;
FILE *f1,*f2;
char buff1[LEN], buff2[LEN];
if ((f1 = fopen("/home/eugen/qtProjecte/testProject/test/f1.txt", "r")) == NULL)
{
printf("Error opening file ");
exit(0); /* корректный выход из программы в
случае ошибки открытия файла first.txt*/
}
if ((f2 = fopen("/home/eugen/qtProjecte/testProject/test/f2.txt", "r")) == NULL)
{
printf("Error opening file ");
getchar();
return 0;
}
int line = 0;
while( fgets(buff1,LEN,f1) && fgets(buff2,LEN,f2) ) {
++line;
if(strcmp(buff1,buff2) != 0)
{
printf("Line %d of f1.txt %s\n differs from line %d in file f2.txt %s\n", line, buff1,line,buff2);
int i = 0;
int len = min(strlen(buff1), strlen(buff2));
for(; i < len; i++)
{
if (buff1[i] != buff2[i])
{
printf("Files f1.txt and f2.txt are different at line %d on line position %d", line, i);
break;
}
}
}
}
if(strlen(buff1))
{
printf("additional content of f1.txt:\n\n");
do
{
printf("Line %d: %s", line++, buff1);
}
while(fgets(buff1,LEN,f1));
}
if(fgets(buff2,LEN,f2))
{
printf("additional content of f2.txt:\n\n");
do
{
printf("Line %d: %s", line++, buff2);
}
while(fgets(buff2,LEN,f2));
}
fclose (f1); //закрытие файлов.
fclose (f2);
getchar();
return 0;
}
for (int i = 0;i < strlen(buff1);i++)
if (buff1[i] != buff2[i])
{
printf("%d",i);
break ; // ********* Вот тут у тебя ошибка - нет выхода из цикла. Цикл не прерывается при нахождении несоответствия, а продолжает сравнивать дальше и выводить индексы несовпадающих элементов
}
if (buff1[i] != buff2[i])
{
printf("%d",i);
break ; // ********* Вот тут у тебя ошибка - нет выхода из цикла. Цикл не прерывается при нахождении несоответствия, а продолжает сравнивать дальше и выводить индексы несовпадающих элементов
}
А то что компилятор тебе пишет не судьба выложить?
Виталик Семелет
вот это 188189190191200201202203208209210211
Похожие вопросы
- задача TurboPascal с текстовым файлом, помогите....
- C++ Файлы
- !Срочно подскажите Проблема - файл Word не могу открыть
- C++ какую литературу вы можете посоветовать для изучения?
- Как установить файл подкачки? Конкретно можете поставить цифры (Мегабайты)...
- C++ Builder Помогите решить задачу плиз
- В чем состоят основные различия форматов растворных графических файлов? Помогите срочно
- пожалуйста, напишите мне программу этого вопроса в C ++.пожалуйста помогите. Создать динамический массив из N чисел.
- C++ ЗАДАЧКА, ПОМОГИТЕ ПЛИЗ
- Люди помогите не могу включить редактор реестра (
Line 4 of f1.txt CONFIG -= qt
differs from line 4 in file f2.txt CONFIG -= qt4
Files f1.txt and f2.txt are different at line 4 on line position 12additional content of f1.txt:
Line 6: SOURCES += main.cpp
additional content of f2.txt:
Line 7: SOURCES2 += main.cpp
Line 8: SOURCES3 += main.cpp
Line 9: SOURCES4 += main.cpp
Line 10: SOURCES5 += main.cpp
то дайте её не мне.
Найдите нуждающего человека, пенсионера или молодую семью, которым действительно эта денежка принесёт пользу.
Желаю Вам успехов!