• warning: Illegal string offset 'title' in /home/u157986/videoege.ru/www/sites/all/themes/mainsite2/node-article.tpl.php on line 77.
  • warning: Illegal string offset 'content' in /home/u157986/videoege.ru/www/sites/all/themes/mainsite2/node-article.tpl.php on line 80.
  • warning: Illegal string offset 'title' in /home/u157986/videoege.ru/www/sites/all/themes/mainsite2/node-article.tpl.php on line 89.
  • warning: Illegal string offset 'title' in /home/u157986/videoege.ru/www/sites/all/themes/mainsite2/node-article.tpl.php on line 103.
 

Пример кода №1

#include <stdio.h>      // для использования функций: gets, printf, fopen, fclose, feof, fgetc, remove, rename
#include <conio.h>      // для задержки программы (getch)
#include <Windows.h>    // для руссификации программы
//---------------------------------------------------
// посимвольный вывод на экран текстового файла
// pnameFile - имя текстового файла
//---------------------------------------------------
void PrintTextFile(const char pnameFile[])
{
    FILE* f;    // связь с текстовым файлом
    char currentChar;   // текущий считанный файловый символ

    f = fopen(pnameFile, "r");  // открываем файл в режиме чтения данных
    // пока не будут прочитаны все данные текстового файла
    while(!feof(f))
    {
        currentChar = fgetc(f); // читаем очередной символ
        // если данный символ является не признаком конца файла, то
        if(!feof(f))
            printf("%c", currentChar);      // выводим текущий символ на экран
    }
    fclose(f);  // разрываем связь с текстовым файлом
}
//---------------------------------------------------
// главная функция программы (точка входа)
//---------------------------------------------------
int main(void)
{
#define SYMBOL_IN_STRING 60             // максимальное количество символов/литер в 1-й строке выходного файла
#define MAX_LEN_STR 100                 // предельная длина строковых данных
#define TMP_NAME_FILE "tmp.txt"         // имя временного текстового файла
#define POINT '.'                       // разделитель предложений - точка
#define NEW_STRING '\n'                 // переход на новую строку

    char nameFile[MAX_LEN_STR];         // имя входного текстового файла
    char currentChar;                   // текущий символ, считанный из входного файла
    FILE* inFile;       // указатель на входной текстовый файл
    FILE* outFile;      // указатель на временный отформатированный текстовый файл
    int countCharInCurrentString;       // количество символов в текущей строке

    // настройка руссификации в программе
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);

    // печатаем условие задачи на экран пользователя
    printf("Имеется текстовый файл. Составить программу, которая, игнорируя исходное деление файла на строки,\n");
    printf("переформатирует его, разбивая на строки так, чтобы каждая строка оканчивалась точкой либо\n");
    printf("содержала ровно 60 литер (литера - это буква), если среди них нет точки.\n\n");

    // запрашиваем имя входного текстового файла вводом с клавиатуры
    printf("Введите имя входного текстового файла: ");
    gets(nameFile);

    inFile = fopen(nameFile, "r");  // пытаемся открыть входной файл в режиме для чтения данных
    // если входной текстовый файл не удалось открыть, то заканчиваем работу программы
    if(inFile == NULL)
    {
        printf("\nВозникла непредвиденная ошибка открытия текстового файла! Программа закрывается!");
        getch();
        exit(0);
    }
    fclose(inFile);

    // выводим содержимое входного файла на экран
    printf("\nСодержимое входного файла \'%s\' имеет вид:\n\n", nameFile);
    PrintTextFile(nameFile);

    // начинаем переписывать информацию из входного файла во временный файл
    inFile = fopen(nameFile, "r");      // повторно открываем входной файл для чтения данных
    outFile = fopen(TMP_NAME_FILE, "w");    // создаем временный текстовый результирующий файл
    countCharInCurrentString = 0;

    // считываем посимвольно все данные из входного файла, пока не достигнем конца файла
    while(!feof(inFile))
    {
        currentChar = fgetc(inFile);    // считали из входного текстового файла очередной символ
        if(!feof(inFile))       // если был считан не "признак конца файла", то обрабатываем его
        {
            // если считанный символ - переход на новую строку, то просто пропускаем его
            if(currentChar == NEW_STRING)
                continue;
           
            countCharInCurrentString++;     // учтем считанный символ
            fputc(currentChar, outFile);    // пишем текущий символ в выходной файл
            // если считанный символ - "." или накопилось 60 символов, то переходим на новую строку
            if((currentChar == POINT) || (countCharInCurrentString == SYMBOL_IN_STRING))
            {
                fputc(NEW_STRING, outFile);     // переход на новую строку в выходном файле
                countCharInCurrentString = 0;   // началась новая строка (нет ни одного символа)
            }
        }
    }

    // закрываем файловые потоки
    fclose(inFile);
    fclose(outFile);
    remove(nameFile);   // удаляем исходный текстовый файл
    rename(TMP_NAME_FILE, nameFile);    // переименовываем временный файл в исходный

    // выводим на экран отформатированный текстовый файл
    printf("\n\n\nСодержимое отформатированного входного файла \'%s\' имеет вид:\n\n", nameFile);
    PrintTextFile(nameFile);

    printf("\nДля завершения работы программы нажмите клавишу ENTER...");
    getch();    // задержка программы, чтобы можно было просмотреть результаты
    return 0;   // завершение программы и передача управления в ОС
}
//---------------------------------------------------

Пример кода №2

o.h>        // для задержки программы (getch)
#include <Windows.h>    // для руссификации программы
//---------------------------------------------------
// посимвольный вывод на экран текстового файла
// pnameFile - имя текстового файла
//-------------------------------

 

 
 
 
 
 
Авторизация на сайте
 
 
 
Обнаружили
ошибку на сайте?
Занятия по информатике