int f seek(FILE * stream,long offset,int from where);
long ftell(文件*流);
int rewind(文件*流);
2.例行程序:
#包含?& ltstdio.h & gt
#包含?& ltstdlib.h & gt
#包含?& ltstring.h & gt
#包含?& ltconio.h & gt
#包含?& ltWindows.h & gt
/*?將讀取的文件放入數組中,並將新數據插入數組中;
將數組中的數據重寫到文件中。
*/
虛空?main(int?argc,char?*?agrv)
{
文件?* fp
夏爾。名稱【20】;?//輸入變量
int?總和;?//輸入變量
夏爾。fName【10】【20】;//可以存儲10個名稱。
int?fs core【10】;//存儲10條得分記錄。
夏爾。buff 1【20】;
夏爾。buff 2【20】;
int?I = 0;
//打開存儲文件
如果?((FP = fopen(“c:\ \ score list . txt“,“r“))= = NULL)
{
printf(“可以嗎?不是嗎?打開嗎?那個?文件“);
getch();
退出(0);
}?
其他
{?
什麽時候?(!feof(FP))
{?
zero memory(buff 1,sizeof(buff 1));?//清除存儲器
零內存(buff2,sizeof(buff 1));
fgets(buff 1,sizeof(buff 1),FP);?//讀取名稱
fgets(buff 2,sizeof(buff 2),FP);?//讀出第二行的分數。
如果?(strcmp(buff 1,“““)==0)
{
繼續;
}
其他
{
strcpy(fName【I】,buff 1);?
printf(“% s“,fName【I】);?//輸出名稱
fs core【I】?=?atoi(buff 2);//將字符類型轉換為int類型。
printf(“% I \ n“,fs core【I】);//打印出小數值
}
i++;
}
}
fclose(FP);
//打開存儲文件,將排序後的數據重新寫入文件。
如果?((FP = fopen(“c:\ \ score list . txt“,“w“))= = NULL)
{
printf(“可以嗎?不是嗎?打開嗎?那個?文件“);
getch();
退出(0);
}?
其他
{?
printf(“輸入?那個?新的?名稱:\ n“);
scanf(“% s“,name);
printf(“輸入?那個?新的?score:\ n“);
scanf(“% I“,& ampsum);
int?j?=0;
//獲取新積分的排序位置。
而(sum?& lt?fs core【j】)
{
j++;
}
//移動數據以從後向前對數組重新排序。
int?m?=?我;
什麽時候?(我》j)
{
strcpy(fName【I】,fName【I-1】);
fs core【I】?=?fs core【I-1】;
I-;
}
strcpy(fName【j】,name);
strcat(fName【j】,“\ n“);
fs core【j】?=?總和;
//寫入文本文件
int?k = 0;
while(k & lt;=m)
{
FP uts(fName【k】,FP);
fprintf(FP,“%i\n“,fs core【k】);
k++;
}
}
fclose(FP);
}