Чтение текста из файла и вывод на экран - 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; }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Устанавливается русская локаль
- Объявляются переменные: файловые указатели inp и outp, строки nameIn и nameOut, буфер buff и размер size
- В цикле do-while запрашивается имя входного файла и считывается в переменную nameIn. Если файл не открывается, выводится сообщение об ошибке и цикл продолжается.
- Вычисляется размер входного файла и выделяется буфер под этот размер
- Файл считывается в буфер с помощью функции fread
- В цикле for происходит какая-то обработка считанных данных
- Выводится содержимое буфера
- Запрашивается имя выходного файла и считывается в переменную nameOut.
- Открывается выходной файл для записи
- Если файл не открывается, выводится сообщение об ошибке, программа завершается и выводится код ошибки
- Считанные данные записываются в выходной файл
- Буфер освобождается с помощью функции free
- Файлы закрываются с помощью функции fclose
- Программа возвращает 0, что означает успешное завершение
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д