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

Ко всем переменным, используемым в инструкциях ввода и вывода, обращение происходит без использования имени структурной переменной.

К переменным следует обращаться как к disc.name, disc.description и так далее.

Глава 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);

}

  1. .Напишите программу, которая читает названия кинофильмов (упражнение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);

}

  1. .Напишите программу, в которой функция 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);

fclose(fp);

}

fprintf(fp, "%s %f %d\n", item.name,

item.cost, item.quant); printf("Введите наименование: "); gets(item.name);

}

  1. .Напишите программу, которая читает файл инвентарной описи, созданный в упражнении 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)

fclose(fp);

}

{

printf("Наименование: %s\n", item.name); printf("Цена %f\n", item.cost); printf("Количество: %d\n", item.quant);

}

  1. .Отредактируйте программы из упражнений 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);

}

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

#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);

}