Перемещение указателя в начало файла

rewind(указатель на файл)

 

Пример 8.3.В файле хранится последовательность чисел. Найти максимальное число и поменять его с первым. Задание выполнить в следующей последовательности.

ü Занести данных в файл

ü Прочесть данные из файла и вывести на экран

ü Выполнить поиск максимального элемента

ü Поменять максимальный элемент с первым

int main()

{

int poz,pozm,i,nk, kol=5;

int a,max=-1000,b;

FILE *pf_1;

 

///Занесение данных в файл

pf_1 = fopen("ff1.dat", "w");

for(i=0; i<kol; i++)

{

a=random(150);

fprintf(pf_1,"\n%4d",a);

}

fclose(pf_1);

getch();

 

//Чтение данных из файла и вывод на экран

 

102 106 16 47 87
 pf_1 = fopen("ff1.dat", "r");

 while(!feof(pf_1))

 {

 fscanf(pf_1,"%d",&a);

 printf("\n %5d ",a);

 }

fclose(pf_1);

 

 

///Поиск максимального элемента

 pf_1 = fopen("ff1.dat", "r");

 i=0;  

 

while(!feof(pf_1))

 {

 poz=ftell(pf_1);

 fscanf(pf_1,"%d",&a);

 if (a>=max) { max=a; nk=i; pozm=poz; }

 i++;

 }

 printf("\n max=%5d nk= %5d pozm =%5d\n",max,nk,pozm);

 fclose(pf_1); 

max=106           nk=1        poz=6

 

 

 


//Меняются максимальный элемен с первым

 pf_1 = fopen("ff1.dat", "r+");

 rewind(pf_1);

 fscanf(pf_1,"%d",&b);

 

fseek (pf_1, pozm, SEEK_SET);

fscanf(pf_1,"%4d",&a);

 

fseek (pf_1, pozm, SEEK_SET);

fprintf(pf_1,"\n%4d",b);

 

fseek (pf_1, 0, SEEK_SET);

fprintf(pf_1,"\n%4d",a);

fclose(pf_1);

 

 

//Чтение преобразованных данных  из файла и вывод на экран

 pf_1 = fopen("ff1.dat", "r");

 while(!feof(pf_1))

106 102 16 47 87
 {

 fscanf(pf_1,"%4d",&a);

 printf("\n %5d ",a);

 }

fclose(pf_1);

return 0;

 }

 


 




Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: