Задача по файлам и строкам - C (СИ)
Формулировка задачи:
Даны 2 текстовых файла. В третий файл записать только те строки из 1-го файла, которые имеются во втором файле и в них есть не менее 3-х букв 'а'(на латинице).
---
Вот мой недокод:
Я только начинаю , и еще мало ориентируюсь в ошибках и причинах их возникновения. Так вот, выводит 2 штуки :
1>d:\оаипп\8\8\8.cpp(29) : error C2446: ==: нет преобразования 'int' в 'char *'
1> Для преобразования из целого типа в указатель требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
1>d:\оаипп\8\8\8.cpp(29) : error C2040: ==: "char [250]" отличается по уровням косвенного обращения от "int"
Объясните пожалуйста , как это исправить ?
#include "stdafx.h"
#include <iostream>
#include "locale.h"
#include "string.h"
int _tmain(int argc, _TCHAR* argv[])
{
FILE *f1,*f2,*f3;
int z;
char a;
char s1[250],s2[250];
setlocale(LC_ALL,"rus");
f1=fopen("C:\\1.txt","r");
f2=fopen("C:\\2.txt","r");
f3=fopen("C:\\3.txt","w");
if(f1==NULL || f2==NULL || f3==NULL)
{
printf("Один из файлов не удалось открыть");
system("pause");
return 0;
}
z=0;
while(!feof(f2))
{
fgets(s2,250,f2);
if(s2 == 'a')
z++;
//{
// strcpy(kor,str);
//}
}
while(!feof(f1))
fgets(s1,250,f1);
if(a>3||s1==s2)
fputs(s1,f3);
system("pause");
return 0;
}Решение задачи: «Задача по файлам и строкам»
textual
Листинг программы
#include "stdafx.h"
#include <iostream>
#include "locale.h"
#include "string.h"
int _tmain(int argc, _TCHAR* argv[])
{
FILE *f1,*f2,*f3;
int z,i;
char s[250],s2[250];
setlocale(LC_ALL,"rus");
f1=fopen("C:\\1.txt","r");
f2=fopen("C:\\2.txt","r");
f3=fopen("C:\\3.txt","w");
if(f1==NULL || f2==NULL || f3==NULL)
{
printf("Один из файлов не удалось открыть");
system("pause");
return 0;
}
while(!feof(f1))
fgets(s,250,f1);
while(!feof(f2))
fgets(s2,250,f2);
if(strcmp(s,s2)==0)
{
z=0;
for(i=0;250;i++)
{
if(s[i]='a')
z++;
}
}
if(z>3)
fputs(s,f3);
printf("Запись произведена. \n");
fclose(f1);
fclose(f2);
fclose(f3);
system("pause");
return 0;
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Определяется входная точка программы
- Объявляются переменные: файловые указатели
f1,f2,f3, целочисленная переменнаяz,iи строковые переменныеs,s2 - Устанавливается русская локаль
- Открываются файлы
f1,f2иf3для чтения и записи соответственно - Проверяется корректность открытия файлов. Если хотя бы один файл не открылся, выводится сообщение об ошибке и программа завершается
- Производится чтение из файла
f1иf2до конца файла - Проверяется равенство строк
sиs2. Если они равны, то выполняется следующий блок кода - Инициализируется переменная
zравной 0 - Происходит проход по всем символам строки
s. Если символ равен 'a', то увеличивается значение переменнойz - Проверяется условие
z > 3. Если оно истинно, то строкаsзаписывается в файлf3 - Выводится сообщение о записи в файл
- Файлы
f1,f2иf3закрываются - Выполняется пауза для пользователя
- Программа возвращает 0, что означает успешное завершение работы