c語言查找之前使用的命令,c語言查找之前使用的命令是

本文目錄一覽:

請問如何用c語言實現遍歷查找磁盤下的exe文件? 我是在VC6.0平台下

調用DOS 命令 dir 就可以了。

如果只要顯示文件名,加 選項 /B

如果要顯示所有子文件夾里的文件名, 加 選項 /S

例如 DIR C:\*.exe /B /S

如果要把顯示 轉向到文件 DIR C:\*.exe /B /S abc.lis

DOS 命令 可以用 sprintf 做成,用 system() 讓它執行。

程序如下:

#include stdio.h

#include stdlib.h

main(){

char cmd[80];

char d;

for (d=’C’;d=’Z’;d++) // 對 磁盤號 C: D: E: …..Z: 循環

{

sprintf(cmd,”DIR %c:\\*.exe /B”,d); // 命令

// printf(“%s\n”,cmd); // 檢查 命令字符串 是否正確

system(cmd); // 執行

}

return 0;

}

c語言命令行在一個文件中查找另一個文件指定的內容

f=fopen(“filter.txt”,”r”);

f1=fopen(“serieA.txt”,”r”);

while (fgets(line,50,f)!=NULL)

{

while (fgets(line,50,f1)!=NULL)

if(strcmp(nameF,nameS)==0)…..

rewind(f1);

}

c語言中預處理命令都有哪些?

C語言的預處理主要有三個方面的內容: 1.宏定義; 2.文件包含; 3.條件編譯。

預處理命令以符號“#”開頭。

宏定義命令:#define、#undef,用來定義和解除宏。(值得注意的是還可以定義帶參數的宏)

文件包含命令:#include “文件名” 或者 #include 文件名。使用前者時會優先從當前目錄查找頭文件,使用後者時優先從默認的系統目錄查找。

條件編譯:#ifdef、#else、#endif、#elif 等。出於程序兼容性的考慮,有些語句希望在條件滿足時才編譯。這時候會用到條件編譯的命令。

如何用c語言進行編輯運行和保存用那幾個命令

TC2.0

(1)、File(文件)菜單

按Alt+F可進入File菜單, 該菜單包括以下內容:

.Load(加載)

裝入一個文件, 可用類似DOS的通配符(如*.C)來進行列表選擇。也可裝入其它

擴展名的文件, 只要給出文件名(或只給路徑)即可。該項的熱鍵為F3, 即只要在主

菜單中按F3即可進入該項, 而不需要先進入File菜單再選此項。

.Pick(選擇)

將最近裝入編輯窗口的8個文件列成一個表讓用戶選擇, 選擇後將該程序裝入

編輯區, 並將光標置在上次修改過的地方。其熱健為Alt-F3。

.New(新文件)

說明文件是新的, 缺省文件名為NONAME.C, 存盤時可改名。

.Save(存盤)

將編輯區中的文件存盤, 若文件名是NONAME.C時, 將詢問是否更改文件名, 其

熱鍵為F2。

(2)、Edit(編輯)菜單

按Alt+E可進入編輯菜單, 若再回車, 則光標出現在編輯窗口, 此時用戶可以

進行文本編輯。

(3)Run(運行)菜單

按Alt+R可進入Run菜單, 該菜單有以下各項:

.Run(運行程序)

運行由Project/Project name項指定的文件名或當前編輯區的文件。如果對上

次編譯後的源代碼未做過修改, 則直接運行到下一個斷點(沒有斷點則運行到結束)。

否則先進行編譯、連接後才運行, 其熱鍵為Ctrl+F9。

(4)、Compile(編譯)菜單

按Alt+C可進入Compile菜單, 該菜單有以下幾個內容:

.Compile to OBJ(編譯生成目標碼)

將一個C源文件編譯生成.OBJ目標文件, 同時顯示生成的文件名。其熱鍵為

Alt+F9。

具體見這篇文章

Turbo C 2.0集成開發環境的使用

進入Turbo C 2.0集成開發環境中後, 屏幕上顯示:

——————————————————————————————

File Edit Run Compile Project Options Debug Break/watch

┌————————————Edit——————————————┐

│ Line 1 Col 1 Insert Indent Tab File Unindent c:NONAME.C│

│ │

│ │

│ │

│ │

│ │

│ │

│ │

│—————————Message——————————————— │

│ │

│ │

└————————————————————————————┘

F1-Help F5-Zoom F6-Switch F7-Trace F8-Step F9-Make F10-Menu

———————————————————————————————

其中頂上一行為Turbo C 2.0 主菜單, 中間窗口為編輯區, 接下來是信息窗

口, 最底下一行為參考行。這四個窗口構成了Turbo C 2.0的主屏幕, 以後的編程、

編譯、調試以及運行都將在這個主屏幕中進行。下面詳細介紹主菜單的內容。

1 主菜單

主菜單 在Turbo C 2.0主屏幕頂上一行, 顯示下列內容:

File Edit Run Compile Project Options Debug Break/watch

除Edit外, 其它各項均有子菜單, 只要用Alt加上某項中第一個字母(即大寫字

母), 就可進入該項的子菜單中。

(1)、File(文件)菜單

按Alt+F可進入File菜單, 該菜單包括以下內容:

.Load(加載)

裝入一個文件, 可用類似DOS的通配符(如*.C)來進行列表選擇。也可裝入其它

擴展名的文件, 只要給出文件名(或只給路徑)即可。該項的熱鍵為F3, 即只要在主

菜單中按F3即可進入該項, 而不需要先進入File菜單再選此項。

.Pick(選擇)

將最近裝入編輯窗口的8個文件列成一個表讓用戶選擇, 選擇後將該程序裝入

編輯區, 並將光標置在上次修改過的地方。其熱健為Alt-F3。

.New(新文件)

說明文件是新的, 缺省文件名為NONAME.C, 存盤時可改名。

.Save(存盤)

將編輯區中的文件存盤, 若文件名是NONAME.C時, 將詢問是否更改文件名, 其

熱鍵為F2。

.Write to(存盤)

可由用戶給出文件名將編輯區中的文件存盤, 若該文件已存在, 則詢問要不要

覆蓋。

.Directory(目錄)

顯示目錄及目錄中的文件, 並可由用戶選擇。

.Change dir(改變目錄)

顯示當前目錄, 用戶可以改變顯示的目錄。

.Os shell(暫時退出)

暫時退出Turbo C 2.0到DOS提示符下, 此時可以運行DOS 命令, 若想回到

Turbo C 2.0中, 只要在DOS狀態下鍵入EXIT即可。

.Quit(退出)

退出Turbo C 2.0, 返回到DOS操作系統中, 其熱鍵為Alt+X。

說明:

以上各項可用光標鍵移動色棒進行選擇, 回車則執行。也可用每一項的第一個

大寫字母直接選擇。若要退到主菜單或從它的下一級菜單列表框退回均可用Esc鍵,

Turbo C 2.0所有菜單均採用這種方法進行操作, 以下不再說明。

(2)、Edit(編輯)菜單

按Alt+E可進入編輯菜單, 若再回車, 則光標出現在編輯窗口, 此時用戶可以

進行文本編輯。

編輯方法基本與wordstar相同, 可用F1鍵獲得有關編輯方法的幫助信息。

與編輯有關的功能鍵如下:

F1 獲得Turbo C 2.0編輯命令的幫助信息

F5 擴大編輯窗口到整個屏幕

F6 在編輯窗口與信息窗口之間進行切換

F10 從編輯窗口轉到主菜單

編輯命令簡介:

PageUp 向前翻頁

PageDn 向後翻頁

Home 將光標移到所在行的開始

End 將光標移到所在行的結尾

Ctrl+Y 刪除光標所在的一行

Ctrl+T 刪除光標所在處的一個詞

Ctrl+KB 設置塊開始

Ctrl+KK 設置塊結尾

Ctrl+KV 塊移動

Ctrl+KC 塊拷貝

Ctrl+KY 塊刪除

Ctrl+KR 讀文件

Ctrl+KW 存文件

Ctrl+KP 塊文件打印

Ctrl+F1 如果光標所在處為Turbo C 2.0庫函數, 則獲得有關該函數的幫助

信息

Ctrl+Q[ 查找Turbo C 2.0雙界符的後匹配符

Ctrl+Q] 查找Turbo C 2.0雙界符的前匹配符

說明:

a. Turbo C 2.0的雙界符包括以下幾種符號:

花括符 {和}

尖括符 和

圓括符 (和)

方括符 [和]

注釋符 /*和*/

雙引號 ”

單引號 ‘

b. Turbo C 2.0在編輯文件時還有一種功能, 就是能夠自動縮進, 即光標定位

和上一個非空字符對齊。在編輯窗口中, Ctrl+OL為自動縮進開關的控制鍵。

(3)Run(運行)菜單

按Alt+R可進入Run菜單, 該菜單有以下各項:

.Run(運行程序)

運行由Project/Project name項指定的文件名或當前編輯區的文件。如果對上

次編譯後的源代碼未做過修改, 則直接運行到下一個斷點(沒有斷點則運行到結束)。

否則先進行編譯、連接後才運行, 其熱鍵為Ctrl+F9。

.Program reset(程序重啟)

中止當前的調試, 釋放分給程序的空間, 其熱鍵為Ctrl+F2。

.Go to cursor(運行到光標處)

調試程序時使用, 選擇該項可使程序運行到光標所在行。光標所在行必須為一

條可執行語句, 否則提示錯誤。其熱鍵為F4。

.Trace into(跟蹤進入)

在執行一條調用其它用戶定義的子函數時, 若用Trace into項, 則執行長條將

跟蹤到該子函數內部去執行, 其熱鍵為F7。

.Step over(單步執行)

執行當前函數的下一條語句, 即使用戶函數調用, 執行長條也不會跟蹤進函數

內部, 其熱鍵為F8。

.User screen(用戶屏幕)

顯示程序運行時在屏幕上顯示的結果。其熱鍵為Alt+F5。

(4)、Compile(編譯)菜單

按Alt+C可進入Compile菜單, 該菜單有以下幾個內容:

.Compile to OBJ(編譯生成目標碼)

將一個C源文件編譯生成.OBJ目標文件, 同時顯示生成的文件名。其熱鍵為

Alt+F9。

.Make EXE file(生成執行文件)

此命令生成一個.EXE的文件, 並顯示生成的.EXE文件名。其中.EXE文件名是下

面幾項之一。

a. 由Project/Project name說明的項目文件名。

b. 若沒有項目文件名, 則由Primary C file說明的源文件。

c. 若以上兩項都沒有文件名, 則為當前窗口的文件名。

.Link EXE file(連接生成執行文件)

把當前.OBJ文件及庫文件連接在一起生成.EXE文件。

.Build all(建立所有文件)

重新編譯項目里的所有文件, 並進行裝配生成.EXE文件。該命令不作過時檢查

(上面的幾條命令要作過時檢查, 即如果目前項目里源文件的日期和時間與目標文

件相同或更早, 則拒絕對源文件進行編譯)。

.Primary C file(主C文件)

當在該項中指定了主文件後, 在以後的編譯中, 如沒有項目文件名則編譯此項

中規定的主C文件, 如果編譯中有錯誤, 則將此文件調入編輯窗口, 不管目前窗口

中是不是主C文件。

.Get info(獲得有關當前路徑、源文件名、源文件字節大小、編譯中的錯誤數

目、可用空間等信息。

(5)、Project(項目)菜單

按Alt+P可進入Project菜單, 該菜單包括以下內容:

.Project name(項目名)

項目名具有.PRJ的擴展名, 其中包括將要編譯、連接的文件名。例如有一個程

序由file1.c, file2.c, file3.c組成, 要將這3個文件編譯裝配成一個file.exe的

執行文件, 可以先建立一個file.prj的項目文件, 其內容如下:

file1.c

file2.c

file3.c

此時將file.prj放入Project name項中, 以後進行編譯時將自動對項目文件中

規定的三個源文件分別進行編譯。然後連接成file.exe文件。

如果其中有些文件已經編譯成.OBJ文件, 而又沒有修改過, 可直接寫上.OBJ擴

展名。此時將不再編譯而只進行連接。

例如: file1.obj

file2.c

file3.c

將不對file1.c進行編譯, 而直接連接。

說明:

當項目文件中的每個文件無擴展名時, 均按源文件對待, 另外, 其中的文件也

可以是庫文件, 但必須寫上擴展名.LIB。

.Break make on(中止編譯)

由用戶選擇是否在有Warining(警告)、Errors(錯誤)、Fatal Errors( 致命錯

誤)時或Link(連接)之前退出Make編譯。

.Auto dependencies(自動依賴)

當開關置為on, 編譯時將檢查源文件與對應的.OBJ文件日期和時間, 否則不進

行檢查。

.Clear project(清除項目文件)

清除Project/Project name中的項目文件名。

.Remove messages(刪除信息)

把錯誤信息從信息窗口中清除掉。

(6)、Options(選擇菜單)

按Alt+O可進入Options菜單, 該菜單對初學者來說要謹慎使用。

.Compiler(編譯器)

本項選擇又有許多子菜單, 可以讓用戶選擇硬件配置、存儲模型、調試技術、

代碼優化、對話信息控制和宏定義。這些子菜單如下:

Model

共有Tiny, small, medium, compact, large, huge 六種不同模式可由同戶選

擇。

Define

打開一個宏定義框, 同戶可輸入宏定義。多重定義可同分號, 賦值可用等號。

Code generation

它又有許多任選項, 這些任選項告訴編譯器產生什麼樣的目標代碼。

Calling convention 可選擇C或Pascal方式傳遞參數。

Instruction set 可選擇8088/8086或80186/80286指令系列。

Floating point 可選擇仿真浮點、數學協處理器浮點或無浮點運算。

Default char type 規定char的類型。

Alignonent 規定地址對準原則。

Merge duplicate strings 作優化用, 將重複的字符串合併在一起。

Standard stack frame 產生一個標準的棧結構。

Test stack overflow 產生一段程序運行時檢測堆棧溢出的代碼。

Line number 在.OBJ文件中放進行號以供調試時用。

OBJ debug information 在.OBJ文件中產生調試信息。

Optimization

Optimize for 選擇是對程序小型化還是對程序速度進行優

化處理。

Use register variable 用來選擇是否允許使用寄存器變量。

Register optimization 儘可能使用寄存器變量以減少過多的取數操

作。

Jump optimization 通過去除多餘的跳轉和調整循環與開關語句

的辦法, 壓縮代碼。

Source

Indentifier length 說明標識符有效字符的個數, 默認為32個。

Nested comments 是否允許嵌套注釋。

ANSI keywords only 是只允許ANSI關鍵字還是也允許Turbo C

2.0關鍵字

Error

Error stop after 多少個錯誤時停止編譯, 默認為25個。

Warning stop after 多少個警告錯誤時停止編譯, 默認為100個。

Display warning

Portability warning 移植性警告錯誤。

ANSI Violations 侵犯了ANSI關鍵字的警告錯誤。

Common error 常見的警告錯誤。

Less common error 少見的警告錯誤。

Names 用於改變段(segment)、 組( group) 和類

(class)的名字, 默認值為CODE,DATA,BSS。

.Linker(連接器)

本菜單設置有關連接的選擇項, 它有以下內容:

Map file menu 選擇是否產生.MAP文件。

Initialize segments 是否在連接時初始化沒有初始化的段。

Devault libraries 是否在連接其它編譯程序產生的目標文件時去尋

找其缺省庫。

Graphics library 是否連接graphics庫中的函數。

Warn duplicate symbols 當有重複符號時產生警告信息。

Stack warinig 是否讓連接程序產生No stack的警告信息。

Case-sensitive link 是否區分大、小寫字。

.Environment(環境)

本菜單規定是否對某些文件自動存盤及製表鍵和屏幕大小的設置

Message tracking

Current file 跟蹤在編輯窗口中的文件錯誤。

All files 跟蹤所有文件錯誤。

Off 不跟蹤。

Keep message 編譯前是否清除Message窗口中的信息。

Config auto save 選on時, 在Run, Shell或退出集成開發環境之前,

如果Turbo C 2.0的配置被改過, 則所做的改動

將存入配置文件中。選off時不存。

Edit auto save 是否在Run或Shell之前, 自動存儲編輯的源文件。

Backup file 是否在源文件存盤時產生後備文件(.BAK文件)。

Tab size 設置製表鍵大小, 默認為8。

Zoomed windows 將現行活動窗口放大到整個屏幕, 其熱鍵為F5。

Screen size 設置屏幕文本大小。

.Directories(路徑)

規定編譯、連接所需文件的路徑, 有下列各項:

Include directories 包含文件的路徑, 多個子目錄用”;”分開。

Library directories 庫文件路徑, 多個子目錄用”;”分開。

Output directoried 輸出文件(.OBJ, .EXE, .MAP文件)的目錄。

Turbo C directoried Turbo C 所在的目錄。

Pick file name 定義加載的pick文件名, 如不定義則從current

pick file中取。

.Arguments(命令行參數)

允許用戶使用命令行參數。

.Save options(存儲配置)

保存所有選擇的編譯、連接、調試和項目到配置文件中, 缺省的配置文件為

TCCONFIG.TC。

.Retrive options

裝入一個配置文件到TC中, TC將使用該文件的選擇項。

(7)、Debug(調試)菜單

按Alt+D可選擇Debug菜單, 該菜單主要用於查錯, 它包括以下內容:

Evaluate

Expression 要計算結果的表達式。

Result 顯示錶達式的計算結果。

New value 賦給新值。

Call stack 該項不可接觸。而在Turbo C debuger 時用於檢

查堆棧情況。

Find function 在運行Turbo C debugger時用於顯示規定的函數。

Refresh display 如果編輯窗口偶然被用戶窗口重寫了可用此恢復

編輯窗口的內容。

(8)、Break/watch(斷點及監視表達式)

按Alt+B可進入Break/watch菜單, 該菜單有以下內容:

Add watch 向監視窗口插入一監視表達式。

Delete watch 從監視窗口中刪除當前的監視表達式。

Edit watch 在監視窗口中編輯一個監視表達式。

Remove all watches 從監視窗口中刪除所有的監視表達式。

Toggle breakpoint 對光標所在的行設置或清除斷點。

Clear all breakpoints 清除所有斷點。

View next breakpoint 將光標移動到下一個斷點處。

VC之類的IDE就簡單多了。

VC compiler ctrl + F7

build F7

buildexecute ctrl + F5

怎麼對C語言中的文件進行內容添加,刪除,查找的操作?

c語言文件操作

13.3 文件的打開與關閉

文件在進行讀寫操作之前要先打開,使用完畢要關閉。所謂打開文件,實際上是建立文件的各種有關信息,並使文件指針指向該文件,以便進行其它操作。關閉文件則斷開指針與文件之間的聯繫,也就禁止再對該文件進行操作。

在C語言中,文件操作都是由庫函數來完成的。在本章內將介紹主要的文件操作函數。

13.3.1 文件的打開(fopen函數)

fopen函數用來打開一個文件,其調用的一般形式為:

文件指針名=fopen(文件名,使用文件方式);

其中,

“文件指針名”必須是被說明為FILE 類型的指針變量;

“文件名”是被打開文件的文件名;

“使用文件方式”是指文件的類型和操作要求。

“文件名”是字符串常量或字符串數組。

例如:

FILE *fp;

fp=(“file a”,”r”);

其意義是在當前目錄下打開文件file a,只允許進行“讀”操作,並使fp指向該文件。

又如:

FILE *fphzk

fphzk=(“c:\\hzk16″,”rb”)

其意義是打開C驅動器磁盤的根目錄下的文件hzk16,這是一個二進制文件,只允許按二進制方式進行讀操作。兩個反斜線“\\ ”中的第一個表示轉義字符,第二個表示根目錄。

使用文件的方式共有12種,下面給出了它們的符號和意義。

文件使用方式

意義

“rt”

只讀打開一個文本文件,只允許讀數據

“wt”

只寫打開或建立一個文本文件,只允許寫數據

“at”

追加打開一個文本文件,並在文件末尾寫數據

“rb”

只讀打開一個二進制文件,只允許讀數據

“wb”

只寫打開或建立一個二進制文件,只允許寫數據

“ab”

追加打開一個二進制文件,並在文件末尾寫數據

“rt+”

讀寫打開一個文本文件,允許讀和寫

“wt+”

讀寫打開或建立一個文本文件,允許讀寫

“at+”

讀寫打開一個文本文件,允許讀,或在文件末追加數據

“rb+”

讀寫打開一個二進制文件,允許讀和寫

“wb+”

讀寫打開或建立一個二進制文件,允許讀和寫

“ab+”

讀寫打開一個二進制文件,允許讀,或在文件末追加數據

對於文件使用方式有以下幾點說明:

1) 文件使用方式由r,w,a,t,b,+六個字符拼成,各字符的含義是:

r(read): 讀

w(write): 寫

a(append): 追加

t(text): 文本文件,可省略不寫

b(banary): 二進制文件

+: 讀和寫

2) 凡用“r”打開一個文件時,該文件必須已經存在,且只能從該文件讀出。

3) 用“w”打開的文件只能向該文件寫入。若打開的文件不存在,則以指定的文件名建立該文件,若打開的文件已經存在,則將該文件刪去,重建一個新文件。

4) 若要向一個已存在的文件追加新的信息,只能用“a”方式打開文件。但此時該文件必須是存在的,否則將會出錯。

5) 在打開一個文件時,如果出錯,fopen將返回一個空指針值NULL。在程序中可以用這一信息來判別是否完成打開文件的工作,並作相應的處理。因此常用以下程序段打開文件:

6) if((fp=fopen(“c:\\hzk16″,”rb”)==NULL)

{

printf(“\nerror on open c:\\hzk16 file!”);

getch();

exit(1);

}

這段程序的意義是,如果返回的指針為空,表示不能打開C盤根目錄下的hzk16文件,則給出提示信息“error on open c:\ hzk16 file!”,下一行getch()的功能是從鍵盤輸入一個字符,但不在屏幕上顯示。在這裡,該行的作用是等待,只有當用戶從鍵盤敲任一鍵時,程序才繼續執行,因此用戶可利用這個等待時間閱讀出錯提示。敲鍵後執行exit(1)退出程序。

7) 把一個文本文件讀入內存時,要將ASCII碼轉換成二進制碼,而把文件以文本方式寫入磁盤時,也要把二進制碼轉換成ASCII碼,因此文本文件的讀寫要花費較多的轉換時間。對二進制文件的讀寫不存在這種轉換。

8) 標準輸入文件(鍵盤),標準輸出文件(顯示器),標準出錯輸出(出錯信息)是由系統打開的,可直接使用。

13.3.2 文件關閉函數(fclose函數)

文件一旦使用完畢,應用關閉文件函數把文件關閉,以避免文件的數據丟失等錯誤。

fclose函數調用的一般形式是:

fclose(文件指針);

例如:

fclose(fp);

正常完成關閉文件操作時,fclose函數返回值為0。如返回非零值則表示有錯誤發生。

13.4 文件的讀寫

對文件的讀和寫是最常用的文件操作。在C語言中提供了多種文件讀寫的函數:

·字符讀寫函數 :fgetc和fputc

·字符串讀寫函數:fgets和fputs

·數據塊讀寫函數:freed和fwrite

·格式化讀寫函數:fscanf和fprinf

下面分別予以介紹。使用以上函數都要求包含頭文件stdio.h。

13.4.1 字符讀寫函數fgetc和fputc

字符讀寫函數是以字符(字節)為單位的讀寫函數。每次可從文件讀出或向文件寫入一個字符。

1. 讀字符函數fgetc

fgetc函數的功能是從指定的文件中讀一個字符,函數調用的形式為:

字符變量=fgetc(文件指針);

例如:

ch=fgetc(fp);

其意義是從打開的文件fp中讀取一個字符並送入ch中。

對於fgetc函數的使用有以下幾點說明:

1) 在fgetc函數調用中,讀取的文件必須是以讀或讀寫方式打開的。

2) 讀取字符的結果也可以不向字符變量賦值,

例如:

fgetc(fp);

但是讀出的字符不能保存。

3) 在文件內部有一個位置指針。用來指向文件的當前讀寫字節。在文件打開時,該指針總是指向文件的第一個字節。使用fgetc 函數後,該位置指針將向後移動一個字節。 因此可連續多次使用fgetc函數,讀取多個字符。應注意文件指針和文件內部的位置指針不是一回事。文件指針是指向整個文件的,須在程序中定義說明,只要不重新賦值,文件指針的值是不變的。文件內部的位置指針用以指示文件內部的當前讀寫位置,每讀寫一次,該指針均向後移動,它不需在程序中定義說明,而是由系統自動設置的。

【例13.1】讀入文件c1.doc,在屏幕上輸出。

#includestdio.h

main()

{

FILE *fp;

char ch;

if((fp=fopen(“d:\\jrzh\\example\\c1.txt”,”rt”))==NULL)

{

printf(“\nCannot open file strike any key exit!”);

getch();

exit(1);

}

ch=fgetc(fp);

while(ch!=EOF)

{

putchar(ch);

ch=fgetc(fp);

}

fclose(fp);

}

本例程序的功能是從文件中逐個讀取字符,在屏幕上顯示。程序定義了文件指針fp,以讀文本文件方式打開文件“d:\\jrzh\\example\\ex1_1.c”,並使fp指向該文件。如打開文件出錯,給出提示並退出程序。程序第12行先讀出一個字符,然後進入循環,只要讀出的字符不是文件結束標誌(每個文件末有一結束標誌EOF)就把該字符顯示在屏幕上,再讀入下一字符。每讀一次,文件內部的位置指針向後移動一個字符,文件結束時,該指針指向EOF。執行本程序將顯示整個文件。

2. 寫字符函數fputc

fputc函數的功能是把一個字符寫入指定的文件中,函數調用的形式為:

fputc(字符量,文件指針);

其中,待寫入的字符量可以是字符常量或變量,例如:

fputc(‘a’,fp);

其意義是把字符a寫入fp所指向的文件中。

對於fputc函數的使用也要說明幾點:

1) 被寫入的文件可以用寫、讀寫、追加方式打開,用寫或讀寫方式打開一個已存在的文件時將清除原有的文件內容,寫入字符從文件首開始。如需保留原有文件內容,希望寫入的字符以文件末開始存放,必須以追加方式打開文件。被寫入的文件若不存在,則創建該文件。

2) 每寫入一個字符,文件內部位置指針向後移動一個字節。

3) fputc函數有一個返回值,如寫入成功則返回寫入的字符,否則返回一個EOF。可用此來判斷寫入是否成功。

【例13.2】從鍵盤輸入一行字符,寫入一個文件,再把該文件內容讀出顯示在屏幕上。

#includestdio.h

main()

{

FILE *fp;

char ch;

if((fp=fopen(“d:\\jrzh\\example\\string”,”wt+”))==NULL)

{

printf(“Cannot open file strike any key exit!”);

getch();

exit(1);

}

printf(“input a string:\n”);

ch=getchar();

while (ch!=’\n’)

{

fputc(ch,fp);

ch=getchar();

}

rewind(fp);

ch=fgetc(fp);

while(ch!=EOF)

{

putchar(ch);

ch=fgetc(fp);

}

printf(“\n”);

fclose(fp);

}

程序中第6行以讀寫文本文件方式打開文件string。程序第13行從鍵盤讀入一個字符後進入循環,當讀入字符不為回車符時,則把該字符寫入文件之中,然後繼續從鍵盤讀入下一字符。每輸入一個字符,文件內部位置指針向後移動一個字節。寫入完畢,該指針已指向文件末。如要把文件從頭讀出,須把指針移向文件頭,程序第19行rewind函數用於把fp所指文件的內部位置指針移到文件頭。第20至25行用於讀出文件中的一行內容。

【例13.3】把命令行參數中的前一個文件名標識的文件,複製到後一個文件名標識的文件中,如命令行中只有一個文件名則把該文件寫到標準輸出文件(顯示器)中。

#includestdio.h

main(int argc,char *argv[])

{

FILE *fp1,*fp2;

char ch;

if(argc==1)

{

printf(“have not enter file name strike any key exit”);

getch();

exit(0);

}

if((fp1=fopen(argv[1],”rt”))==NULL)

{

printf(“Cannot open %s\n”,argv[1]);

getch();

exit(1);

}

if(argc==2) fp2=stdout;

else if((fp2=fopen(argv[2],”wt+”))==NULL)

{

printf(“Cannot open %s\n”,argv[1]);

getch();

exit(1);

}

while((ch=fgetc(fp1))!=EOF)

fputc(ch,fp2);

fclose(fp1);

fclose(fp2);

}

本程序為帶參的main函數。程序中定義了兩個文件指針fp1和fp2,分別指向命令行參數中給出的文件。如命令行參數中沒有給出文件名,則給出提示信息。程序第18行表示如果只給出一個文件名,則使fp2指向標準輸出文件(即顯示器)。程序第25行至28行用循環語句逐個讀出文件1中的字符再送到文件2中。再次運行時,給出了一個文件名,故輸出給標準輸出文件stdout,即在顯示器上顯示文件內容。第三次運行,給出了二個文件名,因此把string中的內容讀出,寫入到OK之中。可用DOS命令type顯示OK的內容。

13.4.2 字符串讀寫函數fgets和fputs

1. 讀字符串函數fgets

函數的功能是從指定的文件中讀一個字符串到字符數組中,函數調用的形式為:

fgets(字符數組名,n,文件指針);

其中的n是一個正整數。表示從文件中讀出的字符串不超過 n-1個字符。在讀入的最後一個字符後加上串結束標誌’\0’。

例如:

fgets(str,n,fp);

的意義是從fp所指的文件中讀出n-1個字符送入字符數組str中。

【例13.4】從string文件中讀入一個含10個字符的字符串。

#includestdio.h

main()

{

FILE *fp;

char str[11];

if((fp=fopen(“d:\\jrzh\\example\\string”,”rt”))==NULL)

{

printf(“\nCannot open file strike any key exit!”);

getch();

exit(1);

}

fgets(str,11,fp);

printf(“\n%s\n”,str);

fclose(fp);

}

本例定義了一個字符數組str共11個字節,在以讀文本文件方式打開文件string後,從中讀出10個字符送入str數組,在數組最後一個單元內將加上’\0’,然後在屏幕上顯示輸出str數組。輸出的十個字符正是例13.1程序的前十個字符。

對fgets函數有兩點說明:

1) 在讀出n-1個字符之前,如遇到了換行符或EOF,則讀出結束。

2) fgets函數也有返回值,其返回值是字符數組的首地址。

2. 寫字符串函數fputs

fputs函數的功能是向指定的文件寫入一個字符串,其調用形式為:

fputs(字符串,文件指針);

其中字符串可以是字符串常量,也可以是字符數組名,或指針變量,例如:

fputs(“abcd“,fp);

其意義是把字符串“abcd”寫入fp所指的文件之中。

【例13.5】在例13.2中建立的文件string中追加一個字符串。

#includestdio.h

main()

{

FILE *fp;

char ch,st[20];

if((fp=fopen(“string”,”at+”))==NULL)

{

printf(“Cannot open file strike any key exit!”);

getch();

exit(1);

}

printf(“input a string:\n”);

scanf(“%s”,st);

fputs(st,fp);

rewind(fp);

ch=fgetc(fp);

while(ch!=EOF)

{

putchar(ch);

ch=fgetc(fp);

}

printf(“\n”);

fclose(fp);

}

本例要求在string文件末加寫字符串,因此,在程序第6行以追加讀寫文本文件的方式打開文件string。然後輸入字符串,並用fputs函數把該串寫入文件string。在程序15行用rewind函數把文件內部位置指針移到文件首。再進入循環逐個顯示當前文件中的全部內容。

13.4.3 數據塊讀寫函數fread和fwtrite

C語言還提供了用於整塊數據的讀寫函數。可用來讀寫一組數據,如一個數組元素,一個結構變量的值等。

讀數據塊函數調用的一般形式為:

fread(buffer,size,count,fp);

寫數據塊函數調用的一般形式為:

fwrite(buffer,size,count,fp);

其中:

buffer 是一個指針,在fread函數中,它表示存放輸入數據的首地址。在fwrite函數中,它表示存放輸出數據的首地址。

size 表示數據塊的字節數。

count 表示要讀寫的數據塊塊數。

fp 表示文件指針。

例如:

fread(fa,4,5,fp);

其意義是從fp所指的文件中,每次讀4個字節(一個實數)送入實數組fa中,連續讀5次,即讀5個實數到fa中。

【例13.6】從鍵盤輸入兩個學生數據,寫入一個文件中,再讀出這兩個學生的數據顯示在屏幕上。

#includestdio.h

struct stu

{

char name[10];

int num;

int age;

char addr[15];

}boya[2],boyb[2],*pp,*qq;

main()

{

FILE *fp;

char ch;

int i;

pp=boya;

qq=boyb;

if((fp=fopen(“d:\\jrzh\\example\\stu_list”,”wb+”))==NULL)

{

printf(“Cannot open file strike any key exit!”);

getch();

exit(1);

}

printf(“\ninput data\n”);

for(i=0;i2;i++,pp++)

scanf(“%s%d%d%s”,pp-name,pp-num,pp-age,pp-addr);

pp=boya;

fwrite(pp,sizeof(struct stu),2,fp);

rewind(fp);

fread(qq,sizeof(struct stu),2,fp);

printf(“\n\nname\tnumber age addr\n”);

for(i=0;i2;i++,qq++)

printf(“%s\t%5d%7d %s\n”,qq-name,qq-num,qq-age,qq-addr);

fclose(fp);

}

本例程序定義了一個結構stu,說明了兩個結構數組boya和boyb以及兩個結構指針變量pp和qq。pp指向boya,qq指向boyb。程序第16行以讀寫方式打開二進制文件“stu_list”,輸入二個學生數據之後,寫入該文件中,然後把文件內部位置指針移到文件首,讀出兩塊學生數據後,在屏幕上顯示。

——

回復此文章 |

回復主題:Re:c語言文件操作 | 作者: haohao | 軍銜:六級軍士 | 發表時間:2004-07-28 11:08:47

下午應該把這個搞定了.

——

回復此文章 |

回復主題:Re:Re:c語言文件操作 | 作者: haohao | 軍銜:六級軍士 | 發表時間:2004-07-28 11:10:23

13.7 C庫文件

C系統提供了豐富的系統文件,稱為庫文件,C的庫文件分為兩類,一類是擴展名為”.h”的文件,稱為頭文件,在前面的包含命令中我們已多次使用過。在”.h”文件中包含了常量定義、類型定義、宏定義、函數原型以及各種編譯選擇設置等信息。另一類是函數庫,包括了各種函數的目標代碼,供用戶在程序中調用。 通常在程序中調用一個庫函數時,要在調用之前包含該函數原型所在的”.h” 文件。

下面給出Turbo C的全部”.h”文件。

Turbo C頭文件

n ALLOC.H 說明內存管理函數(分配、釋放等)。

n ASSERT.H 定義 assert調試宏。

n BIOS.H 說明調用IBM—PC ROM BIOS子程序的各個函數。

n CONIO.H 說明調用DOS控制台I/O子程序的各個函數。

n CTYPE.H 包含有關字符分類及轉換的名類信息(如 isalpha和toascii等)。

n DIR.H 包含有關目錄和路徑的結構、宏定義和函數。

n DOS.H 定義和說明MSDOS和8086調用的一些常量和函數。

n ERRON.H 定義錯誤代碼的助記符。

n FCNTL.H 定義在與open庫子程序連接時的符號常量。

n FLOAT.H 包含有關浮點運算的一些參數和函數。

n GRAPHICS.H 說明有關圖形功能的各個函數,圖形錯誤代碼的常量定義,正對不同驅動程序的各種顏色值,及函數用到的一些特殊結構。

n IO.H 包含低級I/O子程序的結構和說明。

n LIMIT.H 包含各環境參數、編譯時間限制、數的範圍等信息。

n MATH.H 說明數學運算函數,還定了 HUGE VAL 宏, 說明了matherr和matherr子程序用到的特殊結構。

n MEM.H 說明一些內存操作函數(其中大多數也在STRING.H中說明)。

n PROCESS.H 說明進程管理的各個函數,spawn…和EXEC …函數的結構說明。

n SETJMP.H 定義longjmp和setjmp函數用到的jmp buf類型,說明這兩個函數。

n SHARE.H 定義文件共享函數的參數。

n SIGNAL.H 定義SIG[ZZ(Z] [ZZ)]IGN和SIG[ZZ(Z] [ZZ)]DFL常量,說明rajse和signal兩個函數。

n STDARG.H 定義讀函數參數表的宏。(如vprintf,vscarf函數)。

n STDDEF.H 定義一些公共數據類型和宏。

n STDIO.H 定義Kernighan和Ritchie在Unix System V 中定義的標準和擴展的類型和宏。還定義標準I/O 預定義流:stdin,stdout和stderr,說明 I/O流子程序。

n STDLIB.H 說明一些常用的子程序:轉換子程序、搜索/ 排序子程序等。

n STRING.H 說明一些串操作和內存操作函數。

n SYS\STAT.H 定義在打開和創建文件時用到的一些符號常量。

n SYS\TYPES.H 說明ftime函數和timeb結構。

n SYS\TIME.H 定義時間的類型time[ZZ(Z] [ZZ)]t。

n TIME.H 定義時間轉換子程序asctime、localtime和gmtime的結構,ctime、 difftime、 gmtime、 localtime和stime用到的類型,並提供這些函數的原型。

n VALUE.H 定義一些重要常量,包括依賴於機器硬件的和為與Unix System V相兼容而說明的一些常量,包括浮點和雙精度值的範圍。

13.8 本章小結

1. C系統把文件當作一個“流”,按字節進行處理。

2. C文件按編碼方式分為二進制文件和ASCII文件。

3. C語言中,用文件指針標識文件,當一個文件被打開時,可取得該文件指針。

4. 文件在讀寫之前必須打開,讀寫結束必須關閉。

5. 文件可按只讀、只寫、讀寫、追加四種操作方式打開,同時還必須指定文件的類型是二進制文件還是文本文件。

6. 文件可按字節,字符串,數據塊為單位讀寫,文件也可按指定的格式進行讀寫。

7. 文件內部的位置指針可指示當前的讀寫位置,移動該指針可以對文件實現隨機讀寫。

c語言 怎麼查找 當前目錄有哪些 文件

在命令提示符窗口運行:findfile (盤符):\ *.(文件後綴)

如:[sourcecode language=”plain”]findfile d:\ *.txt [/sourcecode]

即為找出d盤根目錄下的所有.txt後綴的文件並寫入文件路徑於文件中。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/181975.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-24 06:17
下一篇 2024-11-24 06:17

相關推薦

  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Python命令大全及說明

    Python是一種高級編程語言,由Guido van Rossum於1989年底發明。它具有良好的語法結構和面向對象的編程思想,具有簡潔、易讀、易學的特點,是初學者以及專業開發人員…

    編程 2025-04-29
  • Git config命令用法介紹:用正確的郵箱保障開發工作

    本文將詳細介紹如何使用git config命令配置Git的全局和本地用戶信息,特別是如何正確使用用戶郵箱,保障Git操作的正常進行。 一、git config命令介紹 Git中的每…

    編程 2025-04-29
  • Python SSH 遠程執行命令

    Python SSH 遠程執行命令是指在一個服務器上執行遠程另一個服務器上命令。如果你需要在本地機器上執行命令,或者在遠程機器上執行本地命令,你都可以使用 SSH。在 Python…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28

發表回復

登錄後才能評論