本文目錄一覽:
C語言如何把一個文本文件的某一行刪除掉?
可以用c語言的fseek()函數(stdio.h),…隨機讀寫
要知道, 一個文件打開後有一個位置指針, 指示當前讀寫位置..
順序讀寫時, 讀寫一個, 系統自動把位置指針移動到下一位置…
用fseek()就可以手動更改..
用法是fseek(FILE*(文件指針),long offset(偏移量),int whence(參考位置))
參考位取值:0 文件開頭, 1 當前位置, 2 文件最後..
作用就是將FILE*指定的文件的位置指針從參考位置移動offset字節
移動方向由offset的+/-決定..
另外用rewind()可以將位置指針恢復到文件頭..
C語言,刪除一行
刪除文件里的一行內容,後面的行向前移動一行,清空最後一行,程序如下:
假定一行不超過1000字符,
刪去第3行,L=3.
輸入輸出文件名
a.txt
#includestdio.h
void
main()
{
FILE
*fin;
fpos_t
pos_w,pos_r,pos;
int
i,k,L=3;
char
*one_line;
one_line
=
(char
*)
malloc(1000*sizeof(char));
fin
=
fopen
(“a.txt”,”rb+”);
for
(i=1;iL;i++)
fgets(one_line,999,fin);
fgetpos
(fin,pos_w);
fgets(one_line,999,fin);
//
delete
fgetpos
(fin,pos_r);
pos
=
pos_r;
while
(1
==
1)
{
fsetpos
(fin,pos);
if
(fgets(one_line,999,fin)
==NULL)
break;
fgetpos
(fin,pos_r);
pos
=
pos_w;
fsetpos
(fin,pos);
fprintf(fin,”%s”,one_line);
fgetpos
(fin,pos_w);
pos
=
pos_r;
}
pos
=
pos_w;
fsetpos
(fin,pos);
k
=
strlen(one_line);
for
(i=0;ik;i++)
fputc(0x20,fin);
fclose(fin);
}
c語言刪除文件中的指定的一行數據怎麼做
你平時應該有這樣的經歷,打開一個.txt格式的小說,在裡面刪除幾個字,系統反應卻很慢,這是為什麼呢?因為文件里的內容都是在硬盤上按順序一個字節挨着一個字節擺放的,讀取文件的時候,會從文件首地址一直讀到文件結束標記“-1”。如果能夠直接把文件裡面的幾個字節刪掉,那麼下次這個文件怎麼讀呢?怎麼區分中間那幾個字節被刪掉了呢?所以對於這些簡單的文件來說,要想直接刪除裡面的內容是不可能的。
一般有兩個方法實現這個功能:
1.把要保留的內容寫到另一個文件中,要刪掉的內容就不用寫了。
2.把要保留的內容存儲到一個字符串變量中,要刪掉的內容不用存儲,最後把這個字符串再寫回到原文件中覆蓋原來的內容。
例程:
#includestdio.h
struct data
{
int bianhao;
char fenlei[10];
char ming[12];
int shijian[3];
float jiage;
}
void del(int num){//定義刪除指定編號的內容的函數
FILE *f1;//操作的文件
long length;//文件總長度
char *f2;//用於記錄要保存的內容
char s[100];//用於保存每次讀取的一行內容
int n;//用於存儲編號
f1=fopen(“data.txt”,”r”);//以讀的方式打開文件
fseek(f1,0,2);//文件指針移到文件尾
length=ftell(f1);//取得文件長度
f2=(char *)malloc(sizeof(char)*length);//給f2分配文件長度的空間
*f2=0;//使得f2字符串的長度初始為0
rewind(f1);//文件指針回到文件頭
while(ftell(f1)length-3){//當文件沒有結束時就依次讀取文件的每一行
fgets(s,100,f1);//讀取一行信息
n=atoi(s);//從讀取的信息取得編號
if(n==num) continue;//如果編號是要刪除的編號,就不用保存這一行信息了
strcat(f2,s);//保存讀取到的這一行信息
}
fclose(f1);//關閉文件
f1=fopen(“data.txt”,”w”);//重新以寫的方式打開文件
fputs(f2,f1);//把保存的信息重新存儲到文件當中
fclose(f1);//關閉文件
}
int main(){
del(1); //調用上面定義的函數刪除指定編號的內容
del(3); //參數為編號
system(“pause”);//暫停一下
}
怎麼用c語言刪除文件第一行
#include stdio.h
void main() {
FILE *fin,*fout;
int c;
fin=fopen(“t.txt”,”r”);
fout=fopen(“t.tmp”,”w”);
while (1) {
c=fgetc(fin);
if (EOF==c) break;
if (‘\n’==c) break;
}
if (EOF!=c)
while (1) {
c=fgetc(fin);
if (EOF==c) break;
fputc(c,fout);
}
fclose(fin);
fclose(fout);
remove(“t.txt”);
rename(“t.tmp”,”t.txt”);
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/251752.html