Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab11_4.doc
Скачиваний:
10
Добавлен:
15.03.2015
Размер:
173.57 Кб
Скачать
        1. Построчный ввод – вывод

Для организации построкового ввода – вывода могут использоваться следующие функции:

  • fputs(),

  • fgets().

Функция fputs() объявлена следующим образом:

#include<stdio.h>

int fputs(const char* s, FILE* stream);

Функция fputs() выводит строку, на которую установлен указатель s в поток, на который установлен указатель stream. Символ ‘\0’, завершающий выводимую строку в поток не записывается. Если в процессе записи имела место ошибка, то рассматриваемая функция вернет EOF, в случае успеха возвращаемым значением функции fputs() является неотрицательное числа.

Функция fgets() объявлена следующим образом:

#include<stdio.h>

char* fputs(char* s, int n, FILE* stream);

Функция fgets() читает не более n – 1 символов из потока на, который установлен указатель stream, в символьный массив, на который установлен указатель s. Существуют два способа завершения процесса чтения символов:

  • прочитан символ новая строка (‘\n’) ,

  • прочитан n – 1 символ.

В первом случае прочитанный символ новая строка записывается в символьный массив, а затем строка завершается нуль – символом. Во втором случае символ новая строка оказывается непрочтенным и незаписанным в символьный массив. Однако и в этом случае в символьный массив будет записан нуль – символ.

После успешного выполнения функция fgets() возвращает указатель на символьный массив, в который производилась запись. Если имело место достижение конца файла при условии, что ни один символ не был прочитан, возвращаемым значением функции fscanf() является NULL, а содержимое массива, на который установлен указатель s, оказывается неименным.

        1. Блоковый ввод – вывод

Блоковый ввод – вывод обеспечивается функциями fread() и fwrite().

Объявление функции fwrite() имеет следующий вид:

#include<stdio.h>

size_t fwrite(const void* ptr, size_t n, size_t nmemb, FILE* stream);

Функция fwrite() помещает до nmemb элементов (блоков), каждый из которых размером size, из массива адресуемого указателем ptr, в поток, на который установлен указатель stream.

Функция fwrite() возвращает число успешно записанных элементов (блоков). Это значение может оказаться меньше, чем nmemb, если имеет место ошибка.

#include<stdio.h>

size_t fread(void* ptr, size_t n, size_t nmemb, FILE* stream);

Функция fwrite() читает до nmemb элементов (блоков), каждый из которых размером size, в массив адресуемого указателем ptr, из потока, на который установлен указатель stream.

Функция fread() возвращает число успешно прочитанных элементов (блоков). Это значение может оказаться меньше, чем nmemb, если имеет место ошибка или обнаружен конец файла.

      1. Примеры решенных задач

        1. Пример 1. Табулирование функции с записью результатов на диск

          1. Постановка эадачи

Табулировать функцию y = в n равноостоящих точках, начиная от значения x = xn вплоть до x = xk. Результаты табулирования записать в текстовый файл.

          1. Решение

Один из возможных вариантов решения рассматриваемой задачи имеет следующий вид.

/* Файл table.c. */

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

void table_file(double xn, double xk, int n, FILE* out);

int main(void)

{

int n;

double x1, x2;

FILE* out_file;

clrscr();

printf(“Количество расчетных точек = ”);

scanf(“%d”, &n);

printf(“Начальное значение аргумента=”);

scanf(“%lf”, &x1);

printf(“Конечное значение аргумента=”);

scanf(“%lf”, &x2);

if((out_file = fopen(“out_file.txt”, “w”) == NULL))

{

printf(“Не могу открыть файл out_file.txt\n”);

exit(1);

}

table_file(x1, x2, n, out_file);

fclose(out_file);

printf(“Файл сформирован\n”);

getch();

return 0;

}

void table_file(double xn, double xk, int n, FILE* out)

{

double x, dx;

int i ;

fprintf(out, “%5s%15s%15s\n”, “Номер”, “Аргумент”, “Функция”);

dx = (xk - xn) /(n - 1);

x = xn;

for(i = 1; i <= n; i++)

{

fprintf(out, “%5d%15.2f%15.2f\n”, i, x, x * x);

x += dx;

}

}

Соседние файлы в предмете Программирование