Запись кода программы в текстовый документ - C (СИ)

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

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

Здравствуйте, у меня возникла проблема с тем как записать код программы в текстовый документ, помогите пожалуйста. Вот код программы:
#include <stdio.h>
#include <locale.h>
main()
{
    int i = 1;
    char p;
    FILE *f1;//Файл для чтения
    FILE *f2;//Файл для записи
    setlocale(LC_ALL, "RUS");
    if ((f1 = fopen("dota.txt", "r+t")) == NULL)
    {
        printf("Ошибка открытия файла");
    }
    if ((f2 = fopen("dotaout.txt", "w")) == NULL)
    {
        printf("Ошибка записи в файл");
    }
    fprintf(f2, "%d", i);
    while (!feof(f1))
    {
        fscanf(f1, "%c", &p);
        if (feof(f1)) break;
        if (p == 10) { i++; fprintf(f2, "%c%d", p, i); }
        else fprintf(f2, "%c", p);
    }
    fclose(f1);//закрытие файла для чтения
    fclose(f2);//закрытие файла для записи
    system("pause");
}

Решение задачи: «Запись кода программы в текстовый документ»

textual
Листинг программы
#include <stdio.h>
#include <locale.h>
int main()
{
    int i = 1;
    char p;
    FILE *f1;//Файл для чтения
    FILE *f2;//Файл для записи
    setlocale(LC_ALL, "RUS");
 
    if ((f1 = fopen("dota.txt", "r+t")) == NULL)
    {
        printf("Ошибка открытия файла");
    }
    if ((f2 = fopen("dotaout.txt", "w")) == NULL)
    {
        printf("Ошибка записи в файл");
    }
    fprintf(f2, "%d%c", i,' ');
    while (!feof(f1))
    {
        fscanf(f1, "%c", &p);
        if (feof(f1)) break;
        if (p == 10)
        {
            i++;
            fprintf(f2, "%c%d%c", p, i,' ');
        }
        else fprintf(f2, "%c", p);
    }
    fclose(f1);//закрытие файла для чтения
    fclose(f2);//закрытие файла для записи
    return 0;
}

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

  1. Включаются необходимые заголовочные файлы
  2. Определяется переменная i типа int и инициализируется значением 1
  3. Определяется переменная p типа char
  4. Определяются две переменные типа FILE*, которые используются для работы с файлами - f1 и f2.
  5. Устанавливается локаль с помощью функции setlocale(LC_ALL, RUS)
  6. Проверяется корректность открытия файла dota.txt для чтения с помощью функции fopen() и выводится сообщение об ошибке в случае неудачи
  7. Проверяется корректность открытия файла dotaout.txt для записи с помощью функции fopen() и выводится сообщение об ошибке в случае неудачи
  8. В файл dotaout.txt записывается значение переменной i и символ пробела с помощью функции fprintf()
  9. Организован цикл while, который будет выполняться до тех пор, пока не достигнут конец файла dota.txt (до тех пор, пока не будет встречен символ новой строки)
  10. Внутри цикла считывается очередной символ из файла dota.txt с помощью функции fscanf()
  11. Если считанный символ является символом новой строки, то увеличивается значение переменной i, и в файл dotaout.txt записывается значение переменной i, символ новой строки и пробел с помощью функции fprintf()
  12. Если считанный символ не является символом новой строки, то он просто записывается в файл dotaout.txt
  13. После окончания чтения файла dota.txt закрываются оба файловых указателя с помощью функции fclose()
  14. Возвращается значение 0, что означает успешный конец работы программы

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


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

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

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