當前位置:首頁 » 編程語言 » c語言文件處理步驟
擴展閱讀
按行訪問矩陣 2022-11-26 22:54:26
Dos如何退出ftp命令 2022-11-26 22:54:20

c語言文件處理步驟

發布時間: 2022-10-03 13:52:57

1. c語言源程序到運行程序經過哪幾個步驟

1、預處理

在這一階段,源碼中的所有預處理語句得到處理,例如:#include語句所包含的文件內容替換掉語句本身,所有已定義的宏被展開。

根據#ifdef,#if等語句的條件是否成立取捨相應的部分,預處理之後源碼中不再包含任何預處理語句。

GCC預處理階段可以生成.i的文件,通過選項-E可以使編譯器在預處理結束時就停止編譯。例如:gcc -E -o hello.i hello.c

2、編譯

這一階段,編譯器對源碼進行詞法分析、語法分析、優化等操作,最後生成匯編代碼。這是整個過程中最重要的一步,因此也常把整個過程稱為編譯。

可以通過選項-S使GCC在進行完編譯後停止,生成.s的匯編程序。例如:gcc -S -o hello.s hello.c

3、匯編

這一階段使用匯編器對匯編代碼進行處理,生成機器語言代碼,保存在後綴為.o的目標文件中。

當程序由多個代碼文件構成時,每個文件都要先完成匯編工作,生成.o目標文件後,才能進入下一步的鏈接工作。

目標文件已經是最終程序的某一部分了,只是在鏈接之前還不能執行。可以通過-c選項生成目標文件:gcc -c -o hello.o hello.c

4、鏈接

經過匯編以後的機器代碼還不能直接運行。為了使操作系統能夠正確載入可執行文件,文件中必須包含固定格式的信息頭,還必須與系統提供的啟動代碼鏈接起來才能正常運行,這些工作都是由鏈接器來完成的。gcc -o hello hello.c

5、運行:執行.EXE文件,得到運行結果。

2. C語言 對文件進行操作的三個主要過程是

C語言對文件進行操作的三個主要過程是:打開文件、操作文件、關閉文件。

C語言的文件處理功能依據系統是否設置「緩沖區」分為兩種:一種是設置緩沖區,另一種是不設置緩沖區。

由於不設置緩沖區的文件處理方式,必須使用較低級的I/O函數(包含在頭文件io.h和fcntl.h中)來直接對磁碟存取,這種方式的存取速度慢,並且由於不是C的標准函數,跨平台操作時容易出問題。


(2)c語言文件處理步驟擴展閱讀

C語言文件有不同的類型,在程序設計中,主要用到兩種文件:

(1)程序文件:包括源程序文件(後綴為.c)、目標文件(後綴為.obj)、可執行文件(後綴為.exe)等。這種文件的內容是程序代碼。

(2)數據文件:文件的內容不是程序,而是供程序運行時讀寫的數據,如在程序運行過程中輸出到磁碟(或其他外部設備)的數據,或在程序運行過程中供讀入的數據。如一批學生的成績數據、貨物交易的數據等。

為了簡化用戶對輸入輸出設備的操作,使用戶不必去區分各種輸入輸出設備之間的區別,操作系統把各種設備都統一作為文件來處理。從操作系統的角度看,每一個與主機相連的輸入輸出設備都看作一個文件。例如,終端鍵盤是輸入文件,顯示屏和列印機是輸出文件。

輸入輸出是數據傳送的過程,數據如流水一樣從一處流向另一處,因此常將輸入輸出形象地稱為流(stream),即數據流。流表示了信息從源到目的端的流動。在輸入操作時,數據從文件流向計算機內存,在輸出操作時,數據從計算機流向文件(如列印機、磁碟文件)。

C的數據文件由一連串的字元(或位元組)組成,而不考慮行的界限,兩行數據間不會自動加分隔符,對文件的存取是以字元(位元組)為單位的。輸入輸出數據流的開始和結束僅受程序控制而不受物理符號(如回車換行符)控制,這就增加了處理的靈活性。

3. C語言對文件處理

我只知道讀取內容,用fopen(打開)fgets(讀取)fputs(寫入)這幾個函數。

4. C語言怎樣對文件進行操作

我們運用C語言編寫程序的時候,經常需要對文件進行操作。那麼該如何實現呢?下面我給大家分享一下。

工具/材料

Sunlime Text

  • 01

    打開Sublime Text軟體,新建一個C語言文件,然後導入C語言庫,如下圖所示

  • 02

    接下來新建C語言的main函數,對文件的操作都會在main函數中進行,如下圖所示

  • 03

    接下來調用C語言的fopen函數對文件進行打開操作,如下圖所示

  • 04

    當打開文件以後就可以通過fgetc函數讀取文件裡面的內容,如下圖所示

5. [C語言] 運行C程序的步驟

(1)上機輸入和編輯源程序。通過鍵盤向計算機輸入程序,如發現有錯誤,要及時改正。最後將此源程序以文件形式存放在自己指定的文件夾內(如果不特別指定,一般存放在用戶當前目錄下),文件用.c作為後綴,生成源程序文件,如f.c。

(2)對源程序進行編譯,先用C編譯系統提供的「預處理器」(又稱「預處理程序」或「預編譯器」)對程序中的預處理指令進行編譯預處理。例如,對於#include<stdio.h>指令來說,就是將stdio.h頭文件的內容讀進來,取代#include<stdio.h>行。由預處理得到的信息與程序其他部分一起組成一個完整的、可以用來進行正式編譯的源程序,然後由編譯系統對該源程序進行編譯。
編譯的作用首先是對源程序進行檢查,判定它有無語法方面的錯誤,如有,則發出「出錯信息」,告訴編程人員認真檢查改正。修改程序後重新進行編譯,如果還有錯,再發出「出錯信息」。如此反復進行,直到沒有語法錯誤為止。這時,編譯程序自動把源程序轉換為二進制形式的目標程序(在Visual C++中後綴為.obj,如f.obj)。如果不特別指定,此目標程序一般也存放在用戶當前目錄下,此時源文件沒有消失。
在用編譯系統對源程序進行編譯時,自動包括了預編譯和正式編譯兩個階段,一氣呵成。用戶不必分別發出二次指令。
(3)進行連接處理。經過編譯所得到的二進制目標文件(後綴為.obj)還不能供計算機直接執行。前面已說明:一個程序可能包含若干個源程序文件,而編譯是以源程序文件為對象的,一次編譯只能得到與一個源程序文件相對應的目標文件(也稱目標模塊),它只是整個程序的一部分。必須把所有的編譯後得到的目標模塊連接裝配起來,再與函數庫相連接成一個整體,生成一個可供計算機執行的目標程序,稱為可執行程序(executive program),在Visual C++中其後綴為.exe,如f.exe。
即使一個程序只包含一個源程序文件,編譯後得到的目標程序也不能直接運行,也要經過連接階段,因為要與函數庫進行連接,才能生成可執行程序。
以上連接的工作是由一個稱為「連接編輯程序」(linkage editor)的軟體來實現的。
(4)運行可執行程序,得到運行結果。
以上過程如圖1.2所示。其中實線表示操作流程,虛線表示文件的輸入輸出。例如,編輯後得到一個源程序文件f.c,然後在進行編譯時再將源程序文件f.c輸入,經過編譯源程序,找出問題,修改源程序,並重新編譯,直到無錯為止。有時編譯過程未發現錯誤,能生成可執行程序,但是運行的結果不正確。一般情況下,這不是語法方面的錯誤,而可能是程序邏輯方面的錯誤,例如計算公式不正確、賦值不正確等,應當返回檢查源程序,並改正錯誤。
為了編譯、連接和運行C程序,必須要有相應的編譯系統。目前使用的很多C編譯系統都是集成開發環境(IDE)的,把程序的編輯、編譯、連接和運行等操作全部集中在一個界面上進行,功能豐富,使用方便,直觀易用。

6. C語言中文件的讀寫實際過程

RB和R本質上是二進制數據流,但用於文本的二進制數據的含義是ASCII或其他內部代碼。R/W和Rb/WB之間的一個重要區別是,R/W的文本換行格式在不同的系統上是不同的(DOS/windows下的回車字元Cr('\R')+換行字元LF('\n')、UNIX/Linux下的LF和MAC下的Cr),這導致文件操作的細節不同(例如,通過fput和fprintf處理字元串的結尾)。
具體的讀寫實現由庫函數處理,WB/RB模式一般採用緩沖區讀寫,最終實現對外部內存文件或其他輸入/輸出流的抽象(包括在內存中建立緩沖區)。在此基礎上,w/R模式處理了上述一些差異。通常,緩沖區的操作取決於庫函數的實現。用戶無法看到庫函數,因為它是不必要的(無法保證不同平台的實現是一致的)。
對於標准輸入設備,如鍵盤,它被抽象為標准輸入流stdin。除了抽象過程本身(由底層系統實現)外,實現方法與從外部存儲文件讀取之間沒有本質區別。

7. C語言文件的編譯與執行的四個階段並分別描述

開發C程序有四個步驟:編輯、編譯、連接和運行。

任何一個體系結構處理器上都可以使用C語言程序,只要該體系結構處理器有相應的C語言編譯器和庫,那麼C源代碼就可以編譯並連接到目標二進制文件上運行。

1、預處理:導入源程序並保存(C文件)。

2、編譯:將源程序轉換為目標文件(Obj文件)。

3、鏈接:將目標文件生成為可執行文件(EXE文件)。

4、運行:執行,獲取運行結果的EXE文件。

(7)c語言文件處理步驟擴展閱讀:

將C語言代碼分為程序的幾個階段:

1、首先,源代碼文件測試。以及相關的頭文件,比如stdio。H、由預處理器CPP預處理為.I文件。預編譯的。文件不包含任何宏定義,因為所有宏都已展開,並且包含的文件已插入。我歸檔。

2、編譯過程是對預處理文件進行詞法分析、語法分析、語義分析和優化,生成相應的匯編代碼文件。這個過程往往是整個程序的核心部分,也是最復雜的部分之一。

3、匯編程序不直接輸出可執行文件,而是輸出目標文件。匯編程序可以調用LD來生成可以運行的可執行程序。也就是說,您需要鏈接大量的文件才能獲得「a.out」,即最終的可執行文件。

4、在鏈接過程中,需要重新調整其他目標文件中定義的函數調用指令,而其他目標文件中定義的變數也存在同樣的問題。

8. C語言中對文件操作的過程.

文本文件也叫做ascii碼文件,與以『文本方式』打開文件不是同一個概念!文本文件存儲的是asscii碼字元,即存儲在磁碟上只佔用二進制的0x20--0x7e。另外,還有回車(0x0d),換行(0x0a),tab(0x09)等,所以有可壓縮的空間。
換行和回車是不同的,而且在不同的操作系統,解釋也不相同。『\n』一般會操作系統被翻譯成"行的結束",即lf(line-feed);『\r』會被翻譯成"回?,即cr(cariage-return)
回車(cr)和換行(lf)符都是用來表示「下一行」的。而標准沒有規定要使用哪一個。於是產生了三種不同的用法:
(1)
dos和windows採用回車+換行(cr+lg)表示下一行
(2)
unix採用換行符(lf)表示下一行
(3)
mac機採用回車符(cr)表示下一行。
當在不同的系統間傳遞文件,就要涉及格式的轉換。
文本方式和二進制方式的最大區別在於文本方式對於'\n'換行符的理解不同
(1)在dos平台下,該字元會被展開成
<
lf>兩個控制字元(相當於"\r\n"),在ascii字元集下是
0dh,0ah
(2)在unix平台下,僅僅是
,不會展開。
(3)在二進制方式下,不管是什麼平台,'\n'都是精確的

在linux/unix
系統上,只有一種文件類型的系統,帶b字母的模式和對應的不帶b字母的模式是相同的。(unix文本文件通常不包含ctrl+z和\r)
關於eof:
eof可以作為文本文件的結束標志,但不能作為二進制文件的結束符.feof函數既可以判斷二進制文件,又可以判斷文本文件.
eof在windows下是ctrl+z,linux下是ctrl+d.
1,
change
the
default
translation
mode
directly
by
setting
the
global
variable
_fmode
in
your
program.
the
initial
default
setting
of
_fmode
is
_o_text,
for
text
mode.
2,_o_text
sets
text
(translated)
mode.
carriage
return–linefeed
(cr-lf)
combinations
are
translated
into
a
single
linefeed
character
on
input.
linefeed
characters
are
translated
into
cr-lf
combinations
on
output.
_o_binary
sets
binary
(untranslated)
mode,
in
which
these
translations
are
suppressed.
ms-dos文本文件用回車符和換行符的組合\r\n表示行尾。macintosh文本文件使用只用一個回車符\r來表示行尾。c程序使用\n表示行尾。所以,在c程序以文本方式打開一個ms-dos文本文件時,會將\r\n轉換為\n,在寫入文件的時候它會將\n轉換為\r\n。(如果以二進制方式打開該文件,則c程序將看到\r和\n兩個字元。)而對於macintosh文本文件的文本視圖,在讀取文件時它會將\r轉換為\n,在寫入文件的時候它會將\n轉換為\r。

9. 在C語言中,完成C源文件編輯後到生成執行文件的步驟是什麼

在C語言中,完成C源文件編輯後到生成執行文件的步驟是:

  1. 預編譯

    處理有#標識的代碼,如將include的文件進行拷貝、#define的條件編譯等等!

  2. 編譯

    編譯就是將第一階段處理得到的文件通過詞法語法分析等轉換為匯編,對目標代碼的生成進行的優化,翻譯成機器指令。生成的文件叫目標文件。

  3. 鏈接

    把目標文件和所需要的庫,鏈接成為可執行文件。

10. c語言程序編譯過程包括哪四個

C語言編譯過程分成四個步驟: 
1,由.c文件到.i文件,這個過程叫預處理 
2,由.i文件到.s文件,這個過程叫編譯 
3,由.s文件到.o文件,這個過程叫匯編 
4,由.o文件到可執行文件,這個過程叫鏈接
用gcc查看預處理過程(假設源文件叫hello.c) 
gcc -o hello.i hello.c -E 
然後用 vi hello.i 即可查看生成的預處理文件
按ESC 輸入:$ 跳到預處理文件 可看到hello.c源碼
宏的本質:預處理階段的單純的字元串替換
預處理階段,不考慮C語法