Глава 12. Вывод на диск и принтер. — КиберПедия 

Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

Глава 12. Вывод на диск и принтер.



1.Напишите программу, в которой функция fputs() используется для создания файла, содержащего названия кинофильмов.

#include "stdio.h"main() { FILE *fp; char flag; char title[20]; if((fp = fopen("MOVIES","w"))==NULL) { puts("Невозможно открыть файл"); exit(); } flag = 'y'; while(flag!='n') { puts("Введите название кинофильма: "); gets(title); fputs(title, fp); fputs("\n",fp); printf("Желаете продолжить ввод?"); flag=getchar(); putchar('\n'); } fclose(fp); }

2.Напишите программу, которая читает названия кинофильмов (упражнение1) в массив строк.

#include "stdio.h"main() { FILE *fp; int index; char titles[80][12]; index = 0; if((fp = fopen("MOVIES","r"))==NULL) { puts("Невозможно открыть файл"); exit(); } while(fgets(titles[index],12,fp)!= NULL) { puts(titles[index]); index++; if(index>80) { puts("К сожалению, вы уже ввели 80 названий."); break; } } fclose(fp); }

3.Напишите программу, в которой функция fprintf() используется для создания файла инвентарной описи, содержащей сведения о наименовании товара, его цене и количестве единиц, имеющихся в наличии.

#include "stdio.h"main() { FILE *fp;struct product { char name[20]; float cost; int quant; } item; if((fp = fopen("MYFILE","w"))==NULL) { puts("Cannot open the file"); exit(); } puts("\nВведите сведения о товаре\n\n"); printf("Введите наименование: "); gets(item.name); while(strlen(item.name)>0) { printf("Введите цену: "); canf("%f", &item.cost); printf("Введите количество единиц: "); scanf("%d", &item.quant); fprintf(fp, "%s %f %d\n", item.name, item.cost, item.quant); printf("Введите наименование: "); gets(item.name); } fclose(fp); }

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

#include "stdio.h"main() { FILE *fp; struct product { char name[20]; float cost; int quant; } item; if((fp = fopen("MYFILE","r"))==NULL) { puts("Невозможно открыть файл"); exit(); } while(fscanf(fp,"%s %f %d", item.name, &item.cost, &item.quant) != EOF) { printf("Наименование: %s\n", item.name); printf("Цена %f\n", item.cost); printf("Количество: %d\n", item.quant); } fclose(fp); }

5.Отредактируйте программы из упражнений 3 и 4 так, чтобы они читали данные как структуры.

#include "stdio.h"main() { FILE *fp; struct product { char name[20]; loat cost; int quant; } item; if((fp = fopen("MYFILE","w"))==NULL) { puts("Невозможно открыть файл"); exit(); } puts("\nВведите сведения о товаре\n\n"); printf("Введите наименование: "); gets(item.name); while(strlen(item.name)>0) { printf("Введите цену: "); scanf("%f", &item.cost); printf("Введите количество: "); scanf("%d", &item.quant); fwrite(&item, sizeof(item), 1, fp); printf("Введите наименование: "); gets(item.name); } fclose(fp); } #include "stdio.h"main() { FILE *fp; struct product { char name[20]; float cost; int quant; } item; if((fp = fopen("MYFILE","r"))==NULL) { puts("Невозможно открыть файл"); exit(); } while(fread(&item, sizeof(item), 1, fp)==1) { printf("Наименование: %s\n", item.name); printf("Цена: %f\n", item.cost); printf("Количество: %d\n", item.quant); } fclose(fp); }

6.Объясните, почему следующая программа написана неверно:



#include "stdio.c"main() { FILE fp; char letter; if ((fp = fopen("MYFILE", "w")) == NULL) { puts("Невозможно открыть файл"); exit(); } do { letter = getchar(); fputc(letter, fp); } while(letter != '\n'); fclose(fp); } Файл заголовков называется STDIO.H, а не STDIO.C.Указатель на файл должен определяться со звездочкой перед именем: *fp. В цикле while должен быть указан код \r, а не \n.

 

 


ПРИЛОЖЕНИЕ II

Прикладная программа

Листинг к главе 13. Программа составления каталога компакт-дисков.

 

/*CDAPP.C*/#include "stdio.h"#define FILENAME "CDfile"#define TEMPFILE "Temp"#define MAX 20FILE *fp, *tp, *printer;struct CD { char name[20]; char description[40]; char category[12]; float cost; int number; } disc;int slots[MAX];int count; main() { char select; getslots(); do { puts("Моя коллекция компакт-дисков\n"); puts("1 Добавить карточку\n"); puts("2 Удалить карточку\n"); puts("3 Редактировать содержимое карточки\n"); puts("4 Изменить номер ячейки\n"); puts("5 Сортировка карточек\n"); puts("6 Найти карточку\n"); puts("7 Вывести на печать\n"); puts("8 Выйти из программы\n"); printf("Пожалйста, введите Ваш выбор: "); select = getchar(); putchar('\n'); switch(select) { case '1' : addcd(); break; case '2': delcd(); break; case '3': chcd(); break; case '4': chloc(); break; case '5': sort(); break; case '6': locate(); break; case '7': plist(); break; case '8': break; default: puts("Ошибка, повторите ввод\n\n"); } } while(select!='8'); return(0); }addcd() { int pause; if(count>>=MAX) { puts("К сожалению свободных ячеек нет\n"); pause=getchar(); return; } if((fp = fopen(FILENAME,"a")) == NULL) { printf("Невозможно открыть файл %s\n",FILENAME); exit(); } puts("\n"); printf("Введите название диска: "); gets(disc.name); printf("Введите описание:"); gets(disc.description); printf("введите категорию:"); gets(disc.category); printf("Введите цену:"); scanf("%f", &disc.cost); getslot(); fwrite(&disc, sizeof(disc), 1, fp); fclose(fp); getslots(); return; }delcd() { char delname[20]; char fflag; fflag='n'; openrw(); puts("Удаление информации о диске\n"); printf("Введите название диска: "); gets(delname); while(fread(&disc, sizeof(disc), 1, fp)==1) { if(strcmp(disc.name, delname) != 0) fwrite(&disc, sizeof(disc), 1, tp); else fflag='y'; } fclose(fp); fclose(tp); if(fflag=='n') nofind(); else { openwr(); while(fread(&disc, sizeof(disc), 1, tp)==1) fwrite(&disc, sizeof(disc), 1, fp); fclose(fp); fclose(tp); } getslots(); return; }chcd() { char chname[20]; char fflag; int pause; fflag='n'; openrw(); puts("Редактирование сведений о диске\n"); printf("Введите название диска: "); gets(chname); while(fread(&disc, sizeof(disc), 1, fp)==1) { if(strcmp(disc.name,chname)!=0) fwrite(&disc, sizeof(disc), 1, tp); else { fflag='y'; puts("Текущая информация\n"); showdisc(); puts("Новая информация\n"); printf("Введите название диска: "); gets(disc.name); printf("Введите описание:"); gets(disc.description); printf("Введите категорию:"); gets(disc.category); printf("Введите цену:"); scanf("%f", &disc.cost); if(count>>=MAX) { puts("К сожалению свободных ячеек нет\n"); pause=getchar(); } else { getslot(); } fwrite(&disc, sizeof(disc), 1, tp); } } fclose(fp); fclose(tp); if(fflag=='n') nofind(); else { openwr(); while(fread(&disc, sizeof(disc), 1, tp)==1) fwrite(&disc, sizeof(disc), 1, fp); fclose(fp); fclose(tp); } getslots(); return; }chloc() { char chname[20]; char fflag; int pause; fflag='n'; if(count>>=MAX) { puts("К сожалению свободных ячеек нет\n"); pause=getchar(); return; } openrw(); puts("Изменение номера ячейки\n"); printf("Введите название диска: "); gets(chname); while(fread(&disc, sizeof(disc), 1, fp)==1) { if(strcmp(disc.name,chname)!=0) fwrite(&disc, sizeof(disc), 1, tp); else { fflag='y'; puts("Текущая информация\n"); showdisc(); puts("\nНовый номер ячейки\n"); getslot(); fwrite(&disc, sizeof(disc), 1, tp); } } fclose(fp); fclose(tp); if(fflag=='n') nofind(); else { openwr(); while(fread(&disc, sizeof(disc), 1, tp)==1) fwrite(&disc, sizeof(disc), 1, fp); fclose(fp); fclose(tp); } getslots(); return; }locate() { char name[20]; char fflag, pause; fflag='n'; if((fp = fopen(FILENAME,"r")) == NULL) { printf("Невозможно открыть файл %s\n",FILENAME); exit(); } puts("Поиск диска\n"); printf("Введите название диска: "); gets(name); while(fread(&disc, sizeof(disc), 1, fp)==1) { if(strcmp(disc.name,name)==0) { fflag='y'; showdisc(); printf("Для продолжения нажмите Enter"); pause=getchar(); putchar('\n'); } } fclose(fp); fclose(tp); if(fflag=='n') nofind(); return; }plist() { if((fp = fopen(FILENAME,"r")) == NULL) { printf("Невозможно открыть файл %s\n",FILENAME); exit(); } if((printer = fopen("prn","w")) == NULL) { printf("Печатающее устройство не готово к работе\n"); fclose(fp); exit(); } while(fread(&disc, sizeof(disc), 1, fp)==1) { fprintf(printer,"Название: %s\n",disc.name); fprintf(printer,"Описание: %s\n",disc.description); fprintf(printer,"Категория: %s\n",disc.category); fprintf(printer,"Цена: %6.2f\n",disc.cost); fprintf(printer,"Номер п/п: %d\n",disc.number); fprintf(printer,"\n\n"); } fclose(printer); fclose(fp); return; }sort() { struct CD temp[MAX]; int index, loop1, loop2, endloop; loop1=0; loop2=0; endloop=0; index = 0; if((fp = fopen(FILENAME,"r")) == NULL) { printf("Невозможно открыть файл %s\n",FILENAME); exit(); } while(fread(&disc, sizeof(disc), 1, fp)==1) { temp[index]=disc; index++; } fclose(fp); if((fp = fopen(FILENAME,"w")) == NULL) { printf("Невозможно открыть файл %s\n",FILENAME); exit(); } for(loop1=1;loop1<<< while(disc.number } flag="0;" другую\n?); Попробуйте занята. ячейка сожалению, printf(?К { if(slots[index]="=disc.number)" for(index="0;index<>MAX || flag==1); count++; slots[count]=disc.number; return; }getslots() { int index; index=0; count=0; if((fp = fopen(FILENAME,"r")) != NULL) { while(fread(&disc, sizeof(disc), 1, fp)==1) { slots[index]=disc.number; index++; count++; } fclose(fp); } }

 








Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

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

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...





© cyberpedia.su 2017 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав

0.008 с.