Задача по файлам и строкам - 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, что означает успешное завершение работы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д