Чтение текста из файла и вывод на экран - C (СИ)

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

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

#include <conio.h>
#include <stdio.h>
#include <locale.h> 
#include <string.h>
 
int main()
{
    setlocale(LC_ALL,"Rus");
    char name[200];
    char str[200];
printf("\n Введите имя файла: ");   //спрашиваешь имя
gets(name);       //считываешь имя
FILE *f = fopen(name,"r");
fscanf(f,"%c\n",str);/* чтение из файла */
if (f == NULL)
      {
        printf("Ошибка открытия файла.\n"); 
      }
for(int i = 0; i < 200; i++)
        if( str[i] == 'a' && str[i+1] == 'b' && str[i+2] == 'c')
        {
                str[i] = 'd'; 
                str[i+1] = 'e'; 
                str[i+2] = 'f';
        }
 
fprintf(stdout, "%c", str); /* вывод на экран */
fprintf(f, "%s",name); /* писать в файл */
fclose(f);
getch() ;
}
Почему программа не не показывает текст в из файла имя которого вводится с клавиатуры в программе?

Решение задачи: «Чтение текста из файла и вывод на экран»

textual
Листинг программы
#include <conio.h>
#include <stdio.h>
#include <locale.h> 
#include <string.h>
#include <iostream>
#include <io.h>
 
int main(int argc, char* argv[])
{
    setlocale(LC_ALL,"Rus");
        FILE *inp = NULL, *outp = NULL;
        char nameIn[200]={0};
        char nameOut[200]={0};
        char *buff = NULL;
        int size = 0;
    do{
        printf("\n Введите имя файла: ");   //спрашиваешь имя
        gets(nameIn);       //считываешь имя
        inp = fopen(nameIn,"r");
        if (inp == NULL)
        {
            printf("Ошибка открытия файла.\n"); 
        }
    }while(inp==NULL);
        size = _filelength(_fileno(inp));//получаем размер файла
        buff = (char *)malloc(size*sizeof(char));//выделяем буфер под размер файла
        int readsize = fread(buff,sizeof(char),sizeof(char)*size,inp);//считали весь файл в буфф
        for(int i=0;i<readsize;i++)//поменяли его как угодно
        {
                //какойто код
        }
        printf("\nСодержимое файла: \n");
        for(int i=0;i<readsize;i++)//показали
        {
                printf("%c",buff[i]);
        }
        printf("\n Введите имя выходного файла: ");   //спрашиваешь имя
        gets(nameOut);       //считываешь имя
        outp = fopen(nameOut,"w");
        if (outp == NULL)
        {
                printf("Ошибка открытия выходного файла.\n"); 
                exit(1);
        }
        fwrite(buff,sizeof(char),sizeof(char)*readsize,outp);
        free(buff);
        fclose(outp);
        fclose(inp);
        return 0;
}

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

  1. Включаются необходимые заголовочные файлы
  2. Устанавливается русская локаль
  3. Объявляются переменные: файловые указатели inp и outp, строки nameIn и nameOut, буфер buff и размер size
  4. В цикле do-while запрашивается имя входного файла и считывается в переменную nameIn. Если файл не открывается, выводится сообщение об ошибке и цикл продолжается.
  5. Вычисляется размер входного файла и выделяется буфер под этот размер
  6. Файл считывается в буфер с помощью функции fread
  7. В цикле for происходит какая-то обработка считанных данных
  8. Выводится содержимое буфера
  9. Запрашивается имя выходного файла и считывается в переменную nameOut.
  10. Открывается выходной файл для записи
  11. Если файл не открывается, выводится сообщение об ошибке, программа завершается и выводится код ошибки
  12. Считанные данные записываются в выходной файл
  13. Буфер освобождается с помощью функции free
  14. Файлы закрываются с помощью функции fclose
  15. Программа возвращает 0, что означает успешное завершение

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


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

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

6   голосов , оценка 3.833 из 5
Похожие ответы