- 主要使用的函數(shù)
功能比較強悍的主要就是fseek()函數(shù)了
int fseek(FILE * pf, long offset, int WHENCE)
- 主要使用的場景
- 移動到文件中的指定位置,替換該位置的數(shù)據(jù)
- 在文件中遍歷搜索給定的元素, 并替換該位置的數(shù)據(jù)
- 如下一個小demo,集合了需求的測試
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void fseek_test(FILE * pf); void printf_file(FILE * pf, int size); int search_and_replace(FILE * pf, int size,double beReplaced, double replace);
int main(void){
char * path = "E:/test.bin";
FILE * pf;
pf = fopen(path, "wb+");
if(pf == NULL){
perror("open file err");
return -1;
}
fseek_test(pf);
if(pf != NULL){
fclose(pf);
}
getchar();
return 0;
}
void fseek_test(FILE *pf){
double src[10] = {0.1, 0.2, 0.3, 0.4, 0.5, 1.6, 1.7, 1.8,1.9, 2.0};
int rct = fwrite(src, sizeof(double), 10, pf);
if(rct != 10){
perror("write data err");
clearerr(pf);
return;
}
printf("%s\n", "first the data in the file:"); printf_file(pf, 10); fseek(pf, 0 - 3 *sizeof(double), SEEK_END); double tmp = 18.1; fwrite(&tmp, sizeof(double), 1, pf); printf("%s\n", "change the eight double to 18.1:"); printf_file(pf, 10); if(search_and_replace(pf, 10, 0.5, 100.1) >= 0){
printf("%s\n", "seach double 0.5 and replace it to 100.1,then show all number");
printf_file(pf, 10);
} }
// param pf : 文件指針 // @param size : 元素總個數(shù) // @param beReplaced : 在文件中需要搜索的并且需要被替換的元素 // @param replace : 需要被替換為的結(jié)果元素
int search_and_replace(FILE * pf, int size, double beReplaced, double replace){
rewind(pf);
int i;
int retVal = -1;
double tmp = 0;
for(i = 0; i<size; i++){
int ret = fread(&tmp, sizeof(double), 1, pf);
if(ret == 1 && tmp == beReplaced){
fseek(pf, 0 - sizeof(double), SEEK_CUR);
tmp = replace;
fwrite(&tmp, sizeof(double), 1, pf);
retVal = i;
break;
}
}
return retVal;
}
// @param pf : 文件指針 // @param size : 文件中元素的個數(shù)
void printf_file(FILE * pf, int size){
rewind(pf);
double * src = ( double * ) malloc(sizeof(double) * size);
memset(src, 0, sizeof(double) * size);
int ret = fread(src, sizeof(double), size, pf);
if(ret != size){
perror("read file err");
clearerr(pf);
free(src);
return;
}
int i;
for(i = 0; i<size; i++){
printf("%f\t",src[i]);
if((i + 1)%2 == 0 && i != 0){
printf("\n");
}
}
free(src);
rewind(pf);
return;
}
文件指針操作2
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來搪锣,“玉大人秋忙,你說我怎么就攤上這事」怪郏” “怎么了灰追?”我有些...
- 文/不壞的土叔 我叫張陵,是天一觀的道長旁壮。 經(jīng)常有香客問我监嗜,道長,這世上最難降的妖魔是什么抡谐? 我笑而不...
- 正文 為了忘掉前任裁奇,我火速辦了婚禮,結(jié)果婚禮上麦撵,老公的妹妹穿的比我還像新娘刽肠。我一直安慰自己,他們只是感情好免胃,可當我...
- 文/花漫 我一把揭開白布音五。 她就那樣靜靜地躺著,像睡著了一般羔沙。 火紅的嫁衣襯著肌膚如雪躺涝。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼碟绑,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了茎匠?” 一聲冷哼從身側(cè)響起格仲,我...
- 正文 年R本政府宣布,位于F島的核電站便锨,受9級特大地震影響围辙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜放案,卻給世界環(huán)境...
- 文/蒙蒙 一姚建、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧吱殉,春花似錦掸冤、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至押赊,卻和暖如春饺藤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背流礁。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- 說明本次redis集群安裝在rhel6.8 64位機器上谜嫉,redis版本為3.2.8萎坷,redis的gem文件版本為...
- 第1章 第一個C程序第2章 C語言基礎(chǔ)第3章 變量和數(shù)據(jù)類型第4章 順序結(jié)構(gòu)程序設(shè)計第5章 條件結(jié)構(gòu)程序設(shè)計第6章...
- 1.創(chuàng)建文件夾 !/bin/sh mkdir -m 777 "%%1" 2.創(chuàng)建文件 !/bin/sh touch...
- 一個月后他父親回來哆档,他把德薩叫至屋內(nèi),走到柜子邊住闯,轉(zhuǎn)動下放在上面的杯子瓜浸,就看到柜子向左邊開始移動澳淑,德薩呆了發(fā)現(xiàn)柜子...
- 我覺得喜歡幫助那些自己本身很努力 自己有嘗試但沒有成功 并且知道感恩的人