Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Введение в программирование на С.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
930.82 Кб
Скачать

Void main()

{

Int account;

char name[30];

double balance;

FILE *cfPtr;

if((cfPtr=fopen("clients.dat","r"))== NULL)

{

printf("File could not be opened\n");

return;

}

printf("%-10s%-13s%-17s\n","Account","Name", "Balance");

fscanf(cfPtr,"%d%s%lf",&account,name,&balance);

while(!feof(cfPtr))

{

printf("%-10d%-13s%7.2lf\n",account,name , balance);

fscanf(cfPtr,"%d%s%lf",&account,name,&balance);

}

fclose(cfPtr);}

char * fgets(char *,int , FILE *);

функция fgets() считывает из файла на единицу меньше символов указанных с помощью int или как только встречает символ новой строки или символ конец файла.

Пример, когда считываются строки из файла.

#include<stdio.h>

Void main()

{

FILE *k;

char s[200];

k=fopen("aaa.bbb","r");

if(!k)

{

printf("\a\a\a\n");

return;

}

while(!feof(k))

{

fgets(s,100,k);

puts(s);

}

fclose(k);

}

Int fseek(file *,long ,int );

Первый параметр- это указатель на файл; следующие параметр задает количество байтов, на которые необходимо сместить указатель в направлении указанном последним параметром.

Последним параметром могут быть:

SEEK_SET 0 Смещение выполняемся от начало файла

SEEK_CUR 1 Смещение выполняемся от текущей позиции

SEEK_END 1 Смещение выполняемся от конца файла

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

Для текстового файла второй параметр функции fseek должно быть равно нулю, либо значению которое вернула функция ftell, а последний параметр должен быть SEEK_SET

long int ftell(FILE *);

Функция возвращает значение индикатора текущей позиции в файле.

Задачи:

  1. Написать программу, в которой создаются два файла, для записи 10 целых чисел.

  2. Используя первую задачу, в третий файл переписать поочередно числа из заранее созданных файлов.

#include<stdio.h>

Void main()

{

FILE *k1,*k2,*k3;

int x;

k1=fopen("aaa.txt","w+");

if(!k1)

{

puts("FILEa ne najden!!!");

return;

}

k2=fopen("bbb.txt","w+");

if(!k2)

{

puts("FILEb ne najden!!!");

return;

}

k3=fopen("ccc.txt","w");

if(!k3)

{

puts("FILEc ne najden!!!");

return;

}

for(int i=1;i<=10;i++)

{

fprintf(k1,"%d ",i);

}

for(i=11;i<=20;i++)

{

fprintf(k2,"%d ",i);

}

fseek(k1,0,0);

fseek(k2,0,0);

for(i=1;i<=10;i++)

{

fscanf(k1,"%d",&x);

fprintf(k3,"%d ",x);

fscanf(k2,"%d",&x);

fprintf(k3,"%d ",x);

}

fclose(k1);

fclose(k2);

fclose(k3);

}

  1. Сначала создать 2 файла для записи, потом 3-ий файл для записи из этих 2-х файлов, причем длина файлов может быть не одинаковой.

#include<stdio.h>

Void main()

{

FILE *k1,*k2,*k3;

int x,y;

k1=fopen("aaa.txt","w+");

if(!k1)

{

puts("FILEa ne najden!!!");

return;

}

k2=fopen("bbb.txt","w+");

if(!k2)

{

puts("FILEb ne najden!!!");

return;

}

k3=fopen("ccc.txt","w");

if(!k3){

puts("FILEc ne najden!!!");

return;

}

puts("Enter: I-ij FILE");

do{

scanf("%d",&x);

fprintf(k1,"%d ",x);

}while(x);

puts("Enter: II-oj FILE");

do{

scanf("%d",&x);

fprintf(k2,"%d ",x);

}while(x);

fseek(k1,0,0);

fseek(k2,0,0);

fscanf(k1,"%d",&x);

fscanf(k2,"%d",&y);

while(!feof(k1) && !feof(k2)){

fprintf(k3,"%d ",x);

fprintf(k3,"%d ",y);

fscanf(k1,"%d",&x);

fscanf(k2,"%d",&y);

}

if(feof(k1)){

while(!feof(k2)){

fprintf(k3,"%d ",y);

fscanf(k2,"%d",&y);

}

}

if(feof(k2)){

while(!feof(k1)){

fprintf(k3,"%d ",x);

fscanf(k1,"%d",&x);

}

}

fclose(k1);

fclose(k2);

fclose(k3);

}

Задачи:

  1. Создать файл для записи текста. text.txt

#include<stdio.h>

void main()

{

FILE *k;

char x[200];

k=fopen("text.txt","w");

if(!k){

printf("\a\a\a\n");

return;

}

printf("Vvedite stroku: vved prekrachaetsya pri vvode 0\n");

gets(x);

while(x[0]!='0'){

fputs(x,k);

fputs(“\n”,k);

gets(x);

}

fclose(k);

}

  1. Посчитать количество лишних пробелов в тексте, записанном в файле text.txt.

#include<stdio.h>

void main()

{

FILE *k;

char ch;

int kol=0;

k=fopen("text.txt","r");

if(!k){

printf("\a\a\a\n");

return;

}

fscanf(k,"%c",&ch);

while(!feof(k)){

if(ch==' '){

fscanf(k,"%c",&ch);

while(ch==' '){

kol++;

fscanf(k,"%c",&ch);

}

}

fscanf(k,"%c",&ch);

}

printf("Kol ' ' = %d\n",kol);

fclose(k);

}

  1. Переписать из файла text.txt в файл text1.txt без лишних пробелов.

#include<stdio.h>