求助c語言 刪除文字檔案內的指定字串

2021-07-27 11:17:09 字數 5552 閱讀 5239

1樓:匿名使用者

#include

#include

int main()

printf("待刪除的字串:");

gets(str);

while(fgets(s,81,fin))if(strcmp(str,s)) fprintf(fout,"%s",s);

fclose(fin);

fclose(fout);

return 0;}

2樓:匿名使用者

1.開啟一個tmp.txt的檔案儲存結果檔案

file* out=fopen("tmp.txt","w");

file* in=fopen("原檔案.txt","r");

迴圈採用fgets從in中讀入字串,fgets可以指定讀入的最大字串長度,因此可以一部分一部分地讀,處理到檔案結束為止

然後,因為你是要對完整的單詞進行處理,所以fgets完之後再繼續fgetc一個一個的字母,直到讀到一個','再結束,這樣就可以在記憶體中讀到一部分的完整單詞

2.關鍵**:

char str[1000]; //開個1000長度的字串陣列

int len;

while (fgets(str,900,in)!=null) //讀900個,留點空間後面可以讀入直完整單詞

while (str[len-1]!=',') //把最後的單詞讀完整

str[len]='\0';

//接下來對str中的單詞進行處理啦,這裡自己寫,逐個地讀,判斷是不是要刪除的那個,不是的話,就寫入out檔案中

}//最後,刪除原檔案,把tmp.txt代替原檔案

fclose(in);

fclose(out);

remove("原檔案.txt");

rename("tmp.txt","原檔案.txt");

3樓:匿名使用者

共享你的程式**,趁現在有時間,我幫你改

4樓:京縈

如果你之前用結構體就好辦多了~~

c語言-刪除字串中指定的字元

5樓:兔丞飛

一、問題描述:從鍵盤輸入一個字串給str和一個字元給c,刪除str中的所有字元c並輸出刪除後的字串str。

1、輸入:第一行是一個字串; 第二行是一個字元。

2、輸出:刪除指定字元後的字串。

二、設計思路:

1、 同插入問題,定義兩個字元陣列a,b。以及標誌刪除位置的int型pos。

2、用gets函式輸入陣列a的值,並利用for迴圈將陣列a copy到 陣列b。

3、利用for迴圈,令pos位的陣列b元素賦值到a。

三、實現**如下:

四、編譯並執行,執行結果如下:

擴充套件資料

gets()函式用來從標準輸入裝置(鍵盤)讀取字串直到換行符結束,但換行符會被丟棄,然後在末尾新增'\0'字元。其呼叫格式為:gets(s),其中s為字串變數(字串陣列名或字串指標)。

gets()函式讀取到\n(我們輸入的回車)於是停止讀取,但是它不會把\n包含到字串裡面去。然而,和它配合使用的puts函式,卻在輸出字串的時候自動換行。

gets(s) 函式中的變數s為一字串指標。如果為單個字元指標,編譯連線不會有錯誤,但執行後記憶體溢位錯誤。寬字元版本,當使用unicode寬字元文字時,使用這個函式 _getws();在c11標準中被刪除,可用c標準庫中的fgets代替.

6樓:深眠者

沒有特定的字元,但是可以通過**完成你想要的操作。

**如下:

#include

int main()

{char s[100],*p ,*q ;

puts("輸入小於100個字元:");

gets(s);

char del_x;

printf("輸入要刪除的字元:");

scanf("%c",&del_x);

for(p=s,q=s;*p!='\0';p++)

if(*p!=del_x)*q++=*p;

*q=*p;

puts(s);

擴充套件資料:

關鍵字關鍵字又稱為保留字,就是已被c語言本身使用,不能作其它用途使用的字。例如關鍵字不能用作變數名、函式名等識別符號。

基本資料型別

1.void:宣告函式無返回值或無引數,宣告無型別指標,顯示丟棄運算結果。(c89標準新增)

2.char:字元型型別資料,屬於整型資料的一種。(k&r時期引入)

3.int:整型資料,表示範圍通常為編譯器指定的記憶體位元組長。(k&r時期引入)

4.float:單精度浮點型資料,屬於浮點資料的一種。(k&r時期引入)

5.double:雙精度浮點型資料,屬於浮點資料的一種。(k&r時期引入)

6.bool:布林型(c99標準新增)

7.complex:複數的基本型別(c99標準新增)

8._imaginary:虛數,與複數基本型別相似,沒有實部的純虛數(c99標準新增)

9._generic:提供過載的介面入口(c11標準新增)

型別修飾關鍵字

1.short:修飾int,短整型資料,可省略被修飾的int。(k&r時期引入)

2.long:修飾int,長整型資料,可省略被修飾的int。(k&r時期引入)

3.long long:修飾int,超長整型資料,可省略被修飾的int。(c99標準新增)

4.signed:修飾整型資料,有符號資料型別。(c89標準新增)

5.unsigned:修飾整型資料,無符號資料型別。(k&r時期引入)

6.restrict:用於限定和約束指標,並表明指標是訪問一個資料物件的唯一且初始的方式。(c99標準新增)

複雜型別關鍵字

1.struct:結構體宣告。(k&r時期引入)

2.union:聯合體宣告。(k&r時期引入)

3.enum:列舉宣告。(c89標準新增)

4.typedef:宣告型別別名。(k&r時期引入)

5.sizeof:得到特定型別或特定型別變數的大小。(k&r時期引入)

6.inline:行內函數用於取代巨集定義,會在任何呼叫它的地方。(c99標準新增)

儲存級別關鍵字

1.auto:指定為自動變數,由編譯器自動分配及釋放。通常在棧上分配。與static相反。當變數未指定時預設為auto。(k&r時期引入)

2.static:指定為靜態變數,分配在靜態變數區,修飾函式時,指定函式作用域為檔案內部。(k&r時期引入)

3.register:指定為暫存器變數,建議編譯器將變數儲存到暫存器中使用,也可以修飾函式形參,建議編譯器通過暫存器而不是堆疊傳遞引數。(k&r時期引入)

4.extern:指定對應變數為外部變數,即標示變數或者函式的定義在別的檔案中,提示編譯器遇到此變數和函式時在其他模組中尋找其定義。(k&r時期引入)

5.const:指定變數不可被當前執行緒改變(但有可能被系統或其他執行緒改變)。(c89標準新增)

6.volatile:指定變數的值有可能會被系統或其他執行緒改變,強制編譯器每次從記憶體中取得該變數的值,阻止編譯器把該變數優化成暫存器變數。(c89標準新增)

流程控制關鍵字

跳轉結構

1.return:用在函式體中,返回特定值(如果是void型別,則不返回函式值)。(k&r時期引入)

3.break:跳出當前迴圈或switch結構。(k&r時期引入)

4.goto:無條件跳轉語句。(k&r時期引入)

分支結構

1.if:條件語句,後面不需要放分號。(k&r時期引入)

2.else:條件語句否定分支(與if連用)。(k&r時期引入)

3.switch:開關語句(多重分支語句)。(k&r時期引入)

4.case:開關語句中的分支標記,與switch連用。(k&r時期引入)

5.default:開關語句中的「其他」分支,可選。(k&r時期引入)

編譯#define 預編譯巨集

#if 表示式 #else if 表示式 #else #endif 條件編譯

#ifdef 巨集 #else #endif 條件編譯

#ifndef 巨集 #else #endif 條件編譯與條件編譯

7樓:搜虎哈哈

利用c語言刪除字串中所有指定的字元方法如下:

1.基本方法是,編寫函式fun:deletechar()。

這個函式需要接受兩個引數的傳入,一個為該字串str,另一個為想刪除的字元c。通過對整個字串的逐個遍歷,凡是檢測到字元為c,則刪除此字元。具體實現**如下:

2.在主函式,只需要接受使用者輸入的字串,然後呼叫deletechar()函式,最後輸出結果即可。主函式**實現部分如下:

8樓:蝴蝶蘭

void delchar(char *str, char del)++str;

}*d = '\0';

}c語言是一門通用計算機程式語言,應用廣泛。c語言的設計目標是提供一種能以簡易的方式編譯、處理低階儲存器、產生少量的機器碼以及不需要任何執行環境支援便能執行的程式語言。

9樓:吉祥二進位制

#include

int main()

10樓:晴涵陀子

學習c語言當然就得讓他實現對應的作用,實現它的功能。那麼刪除字串中的指定字元在字串太多的情況下不可能人為的去刪除吧。那麼現在就給大家說一下怎麼用c語言設計程式讓它刪除字串中的指定字元。

11樓:兄弟連教育北京總校

直接使用空字串替換就可以了

string b = "abcabcabc";

b=b.replace("b","");

這個應該是比較簡單的了,別的比如取出來你想要刪掉的字元的位置,然後去除

12樓:

特定字元為a.

#include

#include

int main()

len--;}}

puts(str);

return 0;}

13樓:大_匆

#include

int main()

return 0;

}void delete(char *s, char l, int n)

*(s+n--)='\0';}}}

14樓:匿名使用者

對了你要用什麼做? 陣列還是連結串列?

15樓:匿名使用者

#include

char fun(char str[20],char ch)

}void main()

16樓:匿名使用者

#include "stdio.h"

#define max 50

char tm[max];

char* fun(char *ch)

ch++;

}return tm;

}void main()

批處理中怎樣刪除文字檔案的第n行

原文字為 來1.txt,輸出到2.txt,指 自定bai刪除第15行 要求每du行不超過 zhi1024字元 daoecho off set n 15 setlocal enabledelayedexpansion 1.txt 2.txt for l i in 2 1 n do set t set ...

如何用批處理刪除文字檔案第一行前面數字批處理

設原檔案為test.txt,改後檔案為temp.txt echo off for f delims a in test.txt do set str a echo.str 4 temp.txtgoto next next more 1 test.txt temp.txtstart temp.txt ...

求助C語言讀檔案的問題,C語言,不能讀取檔案中的內容

1.不能執行,提示什麼問題?是否有單步除錯?2.不全,不好分析 3.在while中,s 已經改變了s指標的位置,最後 return s存在風險,應該不是你設計的意思 s 如果要出問題就是這一句了,我想你的意思是這是一個字元陣列吧,但是你把起始指標都移位了,怎麼保證程式執行的準確性?形參必須s定義為陣...