Задача по файлам и строкам - C (СИ)

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

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

Даны 2 текстовых файла. В третий файл записать только те строки из 1-го файла, которые имеются во втором файле и в них есть не менее 3-х букв 'а'(на латинице). --- Вот мой недокод:
Листинг программы
  1. #include "stdafx.h"
  2. #include <iostream>
  3. #include "locale.h"
  4. #include "string.h"
  5. int _tmain(int argc, _TCHAR* argv[])
  6. {
  7. FILE *f1,*f2,*f3;
  8. int z;
  9. char a;
  10. char s1[250],s2[250];
  11. setlocale(LC_ALL,"rus");
  12. f1=fopen("C:\\1.txt","r");
  13. f2=fopen("C:\\2.txt","r");
  14. f3=fopen("C:\\3.txt","w");
  15. if(f1==NULL || f2==NULL || f3==NULL)
  16. {
  17. printf("Один из файлов не удалось открыть");
  18. system("pause");
  19. return 0;
  20. }
  21. z=0;
  22. while(!feof(f2))
  23. {
  24. fgets(s2,250,f2);
  25. if(s2 == 'a')
  26. z++;
  27. //{
  28. // strcpy(kor,str);
  29. //}
  30. }
  31. while(!feof(f1))
  32. fgets(s1,250,f1);
  33. if(a>3||s1==s2)
  34. fputs(s1,f3);
  35. system("pause");
  36. return 0;
  37. }
Я только начинаю , и еще мало ориентируюсь в ошибках и причинах их возникновения. Так вот, выводит 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" Объясните пожалуйста , как это исправить ?

Решение задачи: «Задача по файлам и строкам»

textual
Листинг программы
  1. #include "stdafx.h"
  2. #include <iostream>
  3. #include "locale.h"
  4. #include "string.h"
  5.  
  6. int _tmain(int argc, _TCHAR* argv[])
  7. {
  8.     FILE *f1,*f2,*f3;
  9.     int z,i;
  10.     char s[250],s2[250];
  11.     setlocale(LC_ALL,"rus");
  12.     f1=fopen("C:\\1.txt","r");
  13.     f2=fopen("C:\\2.txt","r");
  14.     f3=fopen("C:\\3.txt","w");
  15.    
  16.     if(f1==NULL || f2==NULL || f3==NULL)
  17.     {
  18.         printf("Один из файлов не удалось открыть");
  19.         system("pause");
  20.         return 0;
  21.     }
  22.     while(!feof(f1))
  23.         fgets(s,250,f1);
  24.     while(!feof(f2))
  25.         fgets(s2,250,f2);
  26.     if(strcmp(s,s2)==0)
  27.     {
  28.     z=0;
  29.     for(i=0;250;i++)
  30.     {
  31.         if(s[i]='a')
  32.             z++;
  33.  
  34.     }
  35.     }
  36.     if(z>3)
  37.         fputs(s,f3);
  38.     printf("Запись произведена. \n");
  39.        
  40.     fclose(f1);
  41.     fclose(f2);
  42.     fclose(f3);
  43.     system("pause");
  44.     return 0;
  45. }

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

  1. Включаются необходимые заголовочные файлы
  2. Определяется входная точка программы
  3. Объявляются переменные: файловые указатели f1, f2, f3, целочисленная переменная z, i и строковые переменные s, s2
  4. Устанавливается русская локаль
  5. Открываются файлы f1, f2 и f3 для чтения и записи соответственно
  6. Проверяется корректность открытия файлов. Если хотя бы один файл не открылся, выводится сообщение об ошибке и программа завершается
  7. Производится чтение из файла f1 и f2 до конца файла
  8. Проверяется равенство строк s и s2. Если они равны, то выполняется следующий блок кода
  9. Инициализируется переменная z равной 0
  10. Происходит проход по всем символам строки s. Если символ равен 'a', то увеличивается значение переменной z
  11. Проверяется условие z > 3. Если оно истинно, то строка s записывается в файл f3
  12. Выводится сообщение о записи в файл
  13. Файлы f1, f2 и f3 закрываются
  14. Выполняется пауза для пользователя
  15. Программа возвращает 0, что означает успешное завершение работы

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


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

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

14   голосов , оценка 4.143 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы