Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на C / C++ / Нейбауэр А. Моя первая программа на С.doc
Скачиваний:
182
Добавлен:
02.05.2014
Размер:
3.75 Mб
Скачать

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