導航:首頁 > 數據處理 > c語言中如何刪除某行數據

c語言中如何刪除某行數據

發布時間:2023-01-01 08:13:23

A. c語言刪除文件中的指定的一行數據怎麼做

  1. 你平時應該有這樣的經歷,打開一個.txt格式的小說,在裡面刪除幾個字,系統反應卻很慢,這是為什麼呢?因為文件里的內容都是在硬碟上按順序一個位元組挨著一個位元組擺放的,讀取文件的時候,會從文件首地址一直讀到文件結束標記「-1」。如果能夠直接把文件裡面的幾個位元組刪掉,那麼下次這個文件怎麼讀呢?怎麼區分中間那幾個位元組被刪掉了呢?所以對於這些簡單的文件來說,要想直接刪除裡面的內容是不可能的。
    一般有兩個方法實現這個功能:
    1.把要保留的內容寫到另一個文件中,要刪掉的內容就不用寫了。
    2.把要保留的內容存儲到一個字元串變數中,要刪掉的內容不用存儲,最後把這個字元串再寫回到原文件中覆蓋原來的內容。

  2. 常式:

    #include<stdio.h>
    structdata
    {
    intbianhao;
    charfenlei[10];
    charming[12];
    intshijian[3];
    floatjiage;
    }
    voiddel(intnum){//定義刪除指定編號的內容的函數
    FILE*f1;//操作的文件
    longlength;//文件總長度
    char*f2;//用於記錄要保存的內容
    chars[100];//用於保存每次讀取的一行內容
    intn;//用於存儲編號
    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);//關閉文件
    }
    intmain(){
    del(1);//調用上面定義的函數刪除指定編號的內容
    del(3);//參數為編號
    system("pause");//暫停一下
    }

B. C語言:如何根據需要刪除文件中特定的行

C語言文件操作有覆蓋和追加兩種模式,但不提供插入模式。所以要在文件中指定行進行刪除或者插入,需要按照如下流程操作: 1、以只讀打開文件; 2、將文件逐行讀入到內存中; 3、關閉文件; 4、在內存中對指定行插入或者刪除; 5、以只寫打開文件; 6、將修改後的數據寫入文件; 7、關閉文件。參考代碼:假定文件最多100行,執行刪除第5行,並在原第8,9行中間插入一行數據為例,代碼如下: #include #include char buf[100][1000];int main(){ FILE *fp; char *s="abcdef\n";//要插入的數據 int i=0; int n=0; fp = fopen("my.txt", "r");//讀方式打開文件 while(fgets(buf[n], 1000, fp) != EOF)//循環讀取所有數據 n++; fclose(fp);//關閉文件。 for(i = 4; i<7; i ++)//刪除第五行 strcpy(buf[i],buf[i+1]); strcpy(buf[7], s);//插入到第8行。 fp=fopen("my.txt", "w");//寫方式打開文件。 for(i = 0; i < n; i ++)//寫入所有處理後的數據。 fputs(buf[i], 1000, fp); fclose(fp);//關閉文件。 return 0; }

C. C語言如何把一個文本文件的某一行刪除掉

可以用c語言的fseek()函數(stdio.h),...隨機讀寫
要知道, 一個文件打開後有一個位置指針, 指示當前讀寫位置..
順序讀寫時, 讀寫一個, 系統自動把位置指針移動到下一位置...
用fseek()就可以手動更改..
用法是fseek(FILE*(文件指針),long offset(偏移量),int whence(參考位置))
參考位取值:0 文件開頭, 1 當前位置, 2 文件最後..
作用就是將FILE*指定的文件的位置指針從參考位置移動offset位元組
移動方向由offset的+/-決定..
另外用rewind()可以將位置指針恢復到文件頭..

D. 運用C語言如何刪除文件中的某條數據

比如
#include <stdio.h>
#include <stdlib.h>

int main()
{
FILE *fp;
char *insert = "EE,EE,EE,", tmp[256]={0};
int pos, i;

/*test.txt文件內容:01,00,00,00,0E,00,00,00,00,00,00,E1,E2,00,00,00,00*/
fp = fopen("test.txt", "r+");

/*1、等長覆蓋*/
fseek(fp, 12, 1);
fprintf(fp, "0F"); /*直接寫入等長度的數據就可以完成覆蓋*/

/*2、E2後插入「EE,EE,EE,」 */
fseek(fp, 25, 1);
pos = ftell(fp); /*插入位置*/
fgets(tmp, 256, fp); /*把後面的數據緩存*/
fseek(fp, pos, 0); /*移動到插入位置*/
fprintf(fp, insert); /*插入,就是寫入數據*/
fprintf(fp, tmp); /*把原來的數據再寫回來, 完成*/

/*3、01讀取後++兩次,並重新寫迴文件*/
rewind(fp);
fscanf(fp, "%x", &i); /*讀取數據*/
i = i+2; /* +2 */
fseek(fp, -2, 1); /*調整指針*/
fprintf(fp, "%02x", i); /*寫文件*/

fclose(fp);
system("PAUSE");
return 0;
}

E. c語言 如何刪除文件中的一行,求解答!

一個文件內的內容載入到內存之後是連續存儲的。(至少這種小文件,不超過4KB的)

如果想達到刪除一行的效果。至少有三種辦法可以實現

一、最簡單的辦法,建議讀到鏈表裡,刪除其中一個節點。然後再覆蓋寫回到文件。
二、找到要刪除的位置,fseek到該位置,將之後需要保留的文件內容,從這里開始寫。
三、利用內存映射,將文件映射到內存,直接對內存修改,但是對內存修改,也是需要類似於方法2,將需要保留的內容重新移動位置。

綜上,方法一最簡單。

閱讀全文

與c語言中如何刪除某行數據相關的資料

熱點內容
頂尚堂產品怎麼樣 瀏覽:566
域名交易類型有哪些 瀏覽:797
經濟信息化部門是哪些 瀏覽:226
到哪個網站查看房產信息 瀏覽:226
什麼技術指標最穩 瀏覽:776
程序員走哪個方向 瀏覽:666
朴朴小程序已評價在哪裡查看 瀏覽:943
利川二手傢具交易市場在哪裡 瀏覽:497
預售許可證在哪裡查基本信息 瀏覽:92
產品倉是什麼意思啊 瀏覽:854
織帶技術工資多少一個月 瀏覽:394
老年人怎麼使用微信小程序 瀏覽:194
上海哪裡有金銀首飾批發市場 瀏覽:149
南昌市聯信大市場都賣什麼東西 瀏覽:939
南征交易平台怎麼聯系 瀏覽:267
新鄉哪個駕校招聘信息 瀏覽:924
唐橋水果批發市場怎麼走 瀏覽:777
如何轉行程序猿 瀏覽:317
技術控制措施主要有哪些 瀏覽:980
1kb寫多少程序 瀏覽:179