Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Инициализация полей структурыСодержание книги
Поиск на нашем сайте Инициализация полей структуры может осуществляться двумя способами: · присвоение значений элементам структуры в процессе объявления переменной, относящейся к типу структуры; · присвоение начальных значений элементам структуры с использованием функций ввода-вывода (например, printf() и scanf()). В первом способе инициализация осуществляется по следующей форме: struct ИмяСтруктуры ИмяПеременной={ЗначениеЭлемента1, ЗначениеЭлемента_2,..., ЗначениеЭлементаn}; Пример struct date bd={8,"июня", 1978}; Имя элемента структуры является составным. Для обращения к элементу структуры нужно указать имя структуры и имя самого элемента. Они разделяются точкой: ИмяПеременной.ИмяЭлементаСтруктуры printf("%d %s %d",bd.day, bd.month, bd.year); Второй способ инициализации объектов языка Си с использованием функций ввода-вывода. Пример #include <stdio.h> int day; char *month; int year; }; char firstname[20]; char lastname[20]; struct date bd; }; system("chcp 1251"); system("cls"); struct persone p; printf("Введите имя: "); scanf("%s",p.firstname); printf("Введите фамилию: "); scanf("%s",p.lastname); printf("Введите дату рождения\nЧисло: "); scanf("%d",&p.bd.day); printf("Месяц: "); scanf("%s",p.bd.month); printf("Год: "); scanf("%d",&p.bd.year); printf("\nВы ввели: %s %s, дата рождения %d %s %d года", p.firstname, p.lastname, p.bd.day, p.bd.month, p.bd.year); getchar(); getchar(); return 0; Результат работы
Работа с файлами Для работы с файлами существует специальная структура FILE, находящаяся в библиотеке stdio.h. Стандартный план работы с файлами: 1. Определить переменные типа FILE. 2. Открыть файл 3. Обработка файла 4. Закрыть файл. Открытие файла осуществляется с помощью функции fopen(), которая возвращается указатель на структуру типа FILE, который можно использовать для последующих операций с файлом. FILE *fopen(name, type); name – имя открываемого файла (включая путь), type - указатель на строку символов, определяющих способ доступа к файлу: · "r" — открыть файл для чтения (файл должен существовать); · "w" — открыть пустой файл для записи; если файл существует, то его содержимое теряется; · "a" — открыть файл для записи в конец (для добавления); файл создается, если он не существует; · "r+" — открыть файл для чтения и записи (файл должен существовать); · "w+" — открыть пустой файл для чтения и записи; если файл существует, то его содержимое теряется; · "a+" — открыть файл для чтения и дополнения, если файл не существует, то он создаётся. Возвращаемое значение - указатель на открытый поток. Если обнаружена ошибка, то возвращается значение NULL. Функция fclose() закрывает поток или потоки, связанные с открытыми при помощи функции fopen() файлами. Закрываемый поток определяется аргументом функции fclose(). Возвращаемое значение: значение 0, если поток успешно закрыт; константа EOF, если произошла ошибка. Функции fscanf() и fprintf() аналогичны функциям scanf() и printf(), но работают с файлами данных, и имеют первый аргумент — указатель на файл. fscanf(поток, "ФорматВвода", аргументы); fprintf(поток, "ФорматВывода", аргументы); Функции fgets() и fputs() предназначены для ввода-вывода строк, они являются аналогами функций gets() и puts() для работы с файлами. fgets(УказательНаСтроку,КоличествоСимволов,поток); Символы читаются из потока до тех пор, пока не будет прочитан символ новой строки '\n', который включается в строку, или пока не наступит конец потока EOF или не будет прочитано максимальное символов. Результат помещается в указатель на строку и заканчивается нуль- символом '\0'. Функция возвращает адрес строки. fputs(УказательНаСтроку,поток); Копирует строку в поток с текущей позиции. Завершающий нуль – символ не копируется. Пример Ввести число и сохранить его в файле s1.txt. Считать число из файла s1.txt, увеличить его на 3 и сохранить в файле s2.txt. #include <stdio.h> FILE *S1, *S2; int x, y; system("chcp 1251"); system("cls"); printf("Введите число: "); scanf("%d", &x); S1 = fopen("S1.txt", "w"); fprintf(S1, "%d", x); fclose(S1); S1 = fopen("S1.txt", "r"); S2 = fopen("S2.txt", "w"); fscanf(S1, "%d", &y); y += 3; fclose(S1); fprintf(S2, "%d\n", y); fclose(S2); return 0;
Пример 2. Структура Food, массив структур, считывание из файла. #include "stdafx.h" #include <stdio.h> #include <iostream> struct food { char name[20]; int qty; }; int main () { FILE *file; struct food shop[10]; char i=0; file = fopen("s.txt", "r"); while (fscanf (file, "%s %d", &shop[i].name, &shop[i].qty)!= EOF) { printf("%s %d\n", shop[i].name, shop[i].qty); i++; } fclose(file); //запись в файл file = fopen("s.txt", "a"); printf("food:\n"); for(i =0; i<10; i++) { scanf("%s %d\n", &shop[i].name, &shop[i].qty); fprintf(file, "%s %d\n", shop[i].name, shop[i].qty); } system("pause"); return 0;}
|
||
|
Последнее изменение этой страницы: 2017-02-10; просмотров: 235; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.156 (0.006 с.) |