Студопедия — PROGRAMMING
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

PROGRAMMING






LANGUAGE

=============================================

Second Edition

BRIAN W. KERIGHAN

DENNIS M. RITCHIE

AT & T Bell Laboratories

Murray Hill, New Jersey

Prentice Hall PTR, Upper Saddle River, New Jersey 07458

_________________________________________________________

Файлу, из которого будет считываться информация, присвоим имя data3.txt, файлу, куда она будет записываться, – data33.txt.

Программный код решения примера

#include <stdio.h> #include <conio.h> int main(void) { char str[255+1]; char data3[] = "D:\\data3.txt"; char data33[] = "D:\\data33.txt"; FILE *fid, *fid2; errno_t err; if ((fopen_s(&fid, "D:\\data3.txt", "r")) || (err = fopen_s(&fid2, "D:\\data33.txt", "w"))!= 0) { printf("\n\t The file could not be opened.\n "); printf("\n Press any key: "); getch(); return -1; } if (fgets(str, 255, fid)!= NULL) // чтение из data3.txt { fputs(str, stdout); // вывод на консоль fputs(str, fid2); // запись в файл data33.txt } fclose(fid); fclose(fid2); printf(" Read the information was produced from a file %c\n", data3); printf(" Recorded information has been made to the file %c\n", data33); printf("\n Press any key: "); getch(); return 0; }

В программе с помощью логического условия «или» (||) производится проверка корректности открытия файла data3.txt для чтения и файла data33.txt для записи. Вместо функции fopen() используется функция fopen_s(), которая применяется в MS Visual Studio.

Функция fgets() считывает строки из файла, на который имеется указатель *fid, и записывает их в символьный массив str[256]. Одно поле этой функции используется для определения количества считываемых символов с учетом символа завершения строки.

Первая функция fputs() нужна для вывода информации на консоль с помощью определения стандартного выходного потока stdout, который указывает на «обычное» средство вывода – дисплей. Вторая функция fputs() выводит символьный массив str[] в файл data33.txt с помощью файлового указателя *fid2. Вывод на дисплей и запись в файл будут осуществляться до тех пор, пока при чтении из файла data3.txt не обнаружится признак конца файла, т. е. NULL. Проверку можно выполнять также по числу считанных символов, а именно n – 1, т. е. в данном случае 255 символов из 256.

Результат выполнения программы с выводом текстовой информации на консоль представлен на рис. 12.4.


Рис. 12.4. Консольный вывод содержимого текстового файла


Результат записи информации в текстовый файл показан на рис. 12.5.

Рис. 12.5. Результат записи текстовой информации в текстовый файл

Задание 3

1. Подсчитайте число итераций, выполняемых функцией if().

2. Вывод на консоль выполните с помощью функции printf(), а запись в файл – посредством функции fprintf().

3. Напишите программу ввода строк с клавиатуры и записи введенной информации в текстовый файл с именем compX.txt, где Х – номер компьютера, на котором выполняется лабораторная работа. В качестве вводимой информации используйте название дисциплин, которые вы изучаете на данный момент, а также специальность на которой вы учитесь.

4. Напишите программу записи в текстовый файл compX.txt матрицы вещественных случайных чисел из интервала [–X; X]. Произведите считывание матрицы из файла с выводом ее значений на консоль и записью в другой текстовый файл. Размер матрицы примите n × m, где n = 3Х, m = 2X, где Х – номер компьютера, на котором выполняется лабораторная работа.

5. Напишите программу записи в текстовый файл символьного массива, состоящего из четырех строк и необходимого количества столбцов для записи строчных букв латинского алфавита (количество букв 26).

Примечание. Для п. 5 задания 3 примените массив указателей для считывания строк разной длины.

Пример 4. Написать программу форматированной записи в текстовый файл трех строк различной длины и одномерного целочисленного массива. Произвести чтение из текстового файла с выводом его содержания на консоль и преобразование одномерного массива в двухмерный.

Для решения примера используем функции fprintf(), fgets(), atoi(), fscanf().

Программный код решения примера

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <conio.h> #include <stdlib.h> #define n 4 // число строк матрицы #define m 3 // число столбцов матрицы #define N 123 // число считываемых строк из текстового файла int main(void) { int i, j = 0; int A[n*m] = {1,2,3,4,5,6,7,8,9,10,11,12}; int B[n*m]; FILE *fid; char**str[] = {"aza","baza","qwerty"}; char str2[N][80]; // буферный массив // Обнуление массива B[n*m] for (i = 0; i < n*m; ++i) B[i] = 0; if ((fid = fopen("D:\\data4.txt", "w")) == NULL) {printf("\n\t The file could not be opened.\n "); printf("\n Press any key: "); getch(); return -1; } // Запись в файл data4.txt fprintf(fid, "\n\t The lines are:\n"); for (i = 0; i < m; ++i) fprintf(fid,"\t %c\n", str[i]); for (i = 0; i < n*m; ++i) fprintf(fid, " %3d", A[i]); fclose(fid); printf("\n\t From file \"data4.txt\":\n"); if ((fid = fopen("D:\\data4.txt", "r")) == NULL) {printf("\n\t The file could not be opened.\n "); printf("\n Press any key: "); getch(); return -1; } // Чтение из файла data4.txt for (i = 0; (fgets(str2[i], 80, fid)!= NULL) && (i < N); ++i) printf(" %c",str2[i]); fclose(fid); if ((fid = fopen("D:\\data4.txt", "r")) == NULL) {printf("\n\t Error! You can not open the file \n "); printf("\n Press any key: "); getch(); return -1; } // Повторное чтение из файла data4.txt for (i = 0; fscanf (fid, "%c", str2[i])!= EOF; ++i) if (atoi(str2[i])) { B[j] = atoi(str2[i]); ++j; } fclose(fid); printf("\n\n\t The reconfigured array:\n"); for (i = 0; i < n; ++i) { printf("\n\t"); for (j = 0; j < m; ++j) printf("%5d", B[i*m+j]); } printf("\n\n Press any key: "); getch(); return 0; }

Для форматированной записи в текстовый файл и чтения из файла применены массивы указателей *str[], str2[123][80]. Чтение из файла одномерного массива целых чисел выполняется с помощью функции atoi(), значения целых чисел заносятся сначала в одномерный массив B[n*m]. После закрытия файла data4.txt этот же массив выводится на консоль в виде двухмерной матрицы размера 4 × 3. Форматированная запись строк и одномерного массива в файл data4.txt производится с помощью функции fprintf(). Первое чтение информации из текстового файла осуществляется посредством функции fgets(), что позволяет практически точно копировать расположение строк текстового файла на консоль (дисплей). Функция fscanf() используется для форматированного чтения информации из текста с последующим выделением целых чисел с помощью функции atoi().


Возможный результат выполнения программы представлен на рис. 12.6.

Рис. 12.6. Содержимое текстового файла и преобразованного массива

Задание 4

1. Для вывода информации из текстового файла поочередно используйте функции fgets() и fscanf().

2. Инициализацию массива А выполните как инициализацию двухмерной матрицы с возможными сочетаниями числа строк и столбцов.

3. В качестве строк разной длины используйте название факультета, свою фамилию, специальность и номер учебной группы, в которой Вы учитесь.

4. Массивы чисел определите как вещественные.

5. Размерность массива задайте с клавиатуры и заполните его натуральными числами по строкам. Предусмотрите проверку возможности преобразования одномерного массива в двухмерный. Если возможно преобразование одномерного массива, то выведете двухмерный массив в текстовый файл с именем compX.txt, где Х – номер компьютера, на котором выполняется лабораторная работа.

Пример 5. Написать программу добавления слов в текстовый файл с контролем на консоли [9].

В текстовый файл запишем название книги и авторов [3]. Затем будем добавлять слова, символы и т. д.

Для программного решения примера используем функции файлового ввода / вывода fprintf(), fgets() и rewind(). Кроме того, подключим библиотеку locale.h и объявим прототип функции, что позволит использовать шрифты русского алфавита:

#include <locale.h>;

setlocale(LC_ALL, "Russian");// setlocale(LC_ALL, "rus");

или







Дата добавления: 2015-09-06; просмотров: 430. Нарушение авторских прав; Мы поможем в написании вашей работы!



Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Типовые примеры и методы их решения. Пример 2.5.1. На вклад начисляются сложные проценты: а) ежегодно; б) ежеквартально; в) ежемесячно Пример 2.5.1. На вклад начисляются сложные проценты: а) ежегодно; б) ежеквартально; в) ежемесячно. Какова должна быть годовая номинальная процентная ставка...

Выработка навыка зеркального письма (динамический стереотип) Цель работы: Проследить особенности образования любого навыка (динамического стереотипа) на примере выработки навыка зеркального письма...

Словарная работа в детском саду Словарная работа в детском саду — это планомерное расширение активного словаря детей за счет незнакомых или трудных слов, которое идет одновременно с ознакомлением с окружающей действительностью, воспитанием правильного отношения к окружающему...

Ведение учета результатов боевой подготовки в роте и во взводе Содержание журнала учета боевой подготовки во взводе. Учет результатов боевой подготовки - есть отражение количественных и качественных показателей выполнения планов подготовки соединений...

Сравнительно-исторический метод в языкознании сравнительно-исторический метод в языкознании является одним из основных и представляет собой совокупность приёмов...

Концептуальные модели труда учителя В отечественной литературе существует несколько подходов к пониманию профессиональной деятельности учителя, которые, дополняя друг друга, расширяют психологическое представление об эффективности профессионального труда учителя...

Studopedia.info - Студопедия - 2014-2024 год . (0.011 сек.) русская версия | украинская версия