Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник Моя первая программа на С++.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
5.75 Mб
Скачать

Printf("Пожалуйста, введите имя: "); gets(name);

while(strlen(name) > 0)

{

fputs(name, fp); fputs("\n", fp);

printf("Пожалуйста, введите имя: "); gets(name);

}

Символы, которые вы набираете на клавиатуре, присваиваются строковой переменной name, а затем про- веряется, не оказалась ли длина строки равной 0. Если на запрос сразу же нажать клавишу Enter, строка будет иметь нулевую длину и выполнение цикла прекратится. Если до нажатия Enter ввести хотя бы один символ, строка и код «новая строка» будут записаны на диск.

Некоторые компиляторы позволяют еще более упростить алгоритм ввода строки, например, так:

printf("Пожалуйста, введите имя: "); while(strlen(gets(name)) > 0)

{

fputs(name, fp); fputs("\n", fp);

printf("Пожалуйста, введите имя: ");

}

где ввод строки выполняется внутри условия while.

Для того чтобы напечатать строку на принтере, вместо записи ее на диск используется имя файла "prn".

Чтобы открыть файл, требуется указать:

if ((fp = fopen("prn", "w")) == NULL)

Для создания программы печати длина строки определяется равной 81 символу, чтобы строка могла уме- ститься во всю ширину экрана, прежде чем будет нажата клавиша Enter. В Листинге12.2 приводится текст программы, которая демонстрирует, как можно написать простой текстовый процессор. Строка не посыла- ется на принтер до тех пор, пока не нажата клавиша Enter, что позволяет с помощью клавиши Backspace корректировать ошибки ввода строки.

Листинг 12.2. Программа вывода строки на печатающее устройство.

/*wp.c*/

#include "stdio.h" main()

{

FILE *fp; char line[81];

if ((fp = fopen("prn", "w")) == NULL)

{

puts("Принтер не готов к работе"); exit();

}

puts("Введите текст, после ввода каждой строки нажимайте Enter\n");

puts("Для прекращения ввода нажмите

Enter в начале новой строки\n");

gets(line); while (strlen(line) > 0)

{

fputs(line, fp); fputs("\n", fp); gets(line);

}

fclose(fp);

}

Чтение строк

Чтение строк из файла осуществляется с помощью функции fgets(). Синтаксис функции:

fgets(string_variable, lenght, file_pointer);

Функция вводит строку целиком до символа новой строки, если ее длина не превышает значения, указан- ного в параметре lenght минус один символ. Параметр lenght является целым числом либо целочисленной константой или переменной, указывающей максимально возможное количество символов в строке.

Ниже приведена программа, в которой осуществляется чтение имен из файла, созданного в предыдущем примере:

/*fgets.c"/

#include "stdio.h" main()

{

FILE *fp; char name[12];

if ((fp = fopen("MYFILE", "r")) == NULL)

{

puts("Невозможно открыть файл"); exit();

}

while(fgets(name, 12, fp) != NULL)

{

printf(name);

}

fclose(fp);

}

Ввод выполняется внутри цикла while до тех пор, пока значение читаемого символа не равно NULL. Как только указатель достигнет конца файла, строковой переменной присваивается значение NULL. При по- строчном чтении из файла для указания конца файла всегда используется NULL, а EOF используют при посимвольном чтении.

Если вы пишете программу, предназначенную для чтения любого текстового файла, указывайте значение аргумента lenght равным 80.

Кстати, обратите внимание, что функция printf() используется в этом примере для вывода содержимого строковой переменной без указателей формата. Каждая строка, читаемая из файла, включает код «новая строка», который был записан в файл в инструкции fputs("\n", fp);, и никаких дополнительных кодов «но- вая строка» в параметры функции printf() включать не требуется.