個人主頁:
仍有未知等待探索_C語言疑難,數(shù)據(jù)結(jié)構(gòu),PTA-CSDN博客
專題分欄:
C語言疑難_仍有未知等待探索的博客-CSDN博客
目錄
一、引言?
二、什么是文件?
1、程序文件
2、數(shù)據(jù)文件
3、文件名?
4、文件路徑?
1.相對路徑
2.絕對路徑
三、文件的打開和關(guān)閉?
1、文件操作的大體流程
2、文件的類型
3、文件打開函數(shù)(fopen)?
1.功能?
2.參數(shù)
3.文件的打開方式
4.fopen函數(shù)的使用?
4、文件關(guān)閉函數(shù)(fclose)?
1.功能
2.參數(shù)
3.流的概念
4.fclose函數(shù)的使用
一、引言?
為什么要學(xué)文件操作呢?
我們通過寫這么長時間的代碼,程序數(shù)據(jù)是存放在內(nèi)存中,當(dāng)程序退出的時候,程序數(shù)據(jù)自然就不存在了,等下次運行程序的時候,數(shù)據(jù)又得重新錄入,比較麻煩。而這時候就需要通過將數(shù)據(jù)存在磁盤等方法來使數(shù)據(jù)持久化,這就需要我們對文件進行操作,來儲存數(shù)據(jù)。
二、什么是文件?
磁盤上的就是文件。
文件分為兩種:程序文件和數(shù)據(jù)文件。
1、程序文件
包含:源程序文件(后綴為.c),目標(biāo)文件(windows環(huán)境后綴為.obj),可執(zhí)行程序(windows環(huán)境后綴為.exe)。
2、數(shù)據(jù)文件
文件的內(nèi)容不一定是程序,而是程序運行時讀寫的數(shù)據(jù)。比如程序運行需要從中讀取數(shù)據(jù)的文件,或者輸出內(nèi)容的文件。
3、文件名?
文件名:文件名路徑+文件名主干+文件名后綴
4、文件路徑?
1.相對路徑
假設(shè)文件名為text.txt。
當(dāng)在文件名前加上./操作符的時候,意思是訪問當(dāng)前路徑下的文件。
當(dāng)在文件名前加上../操作符的時候,意思是訪問上一級路徑下的文件。
當(dāng)在文件名前加上../../操作符的時候,意思是訪問上上一級路徑下的文件。(可以疊加)
2.絕對路徑
如:D:\Code\c-language\file\text.txt
三、文件的打開和關(guān)閉?
1、文件操作的大體流程
說了那么多,那我們?nèi)绾斡肅語言程序來對文件進行操作呢?
首先,我們要知道在對文件進行讀和寫操作之前,要先進行文件打開的操作。
然后,我們才進行對文件進行各種操作。
最后,我們既然要打開文件,也必然要關(guān)閉操作。
2、文件的類型
在C語言中,文件也是有自己的類型的。文件的類型是一個結(jié)構(gòu)體類型名字叫做FILE,不過,文件的類型不用我們自己進行編寫,其已經(jīng)由程序員編寫完成,只需要我們來使用。
文件類型的結(jié)構(gòu)體里面都有什么變量,存文件的哪些信息也不需要我們詳細(xì)的知道。
3、文件打開函數(shù)(fopen)?
文件如何打開呢?需要調(diào)用一個函數(shù)fopen。
1.功能?
以某種特定的方式來實現(xiàn)文件的打開操作。
2.參數(shù)
filename:文件類型的變量名。
mode:為某種文件打開方式。
3.文件的打開方式
文件使用方式 | 含義 | 如果指定文件不存在 |
“r”(只讀) | 為了輸入數(shù)據(jù),打開一個已經(jīng)存在的文本文件 | 出錯 |
“w”(只寫) | 為了輸出數(shù)據(jù),打開一個文本文件 | 建立一個新的文件 |
“a”(追加) | 向文本文件尾添加數(shù)據(jù) | 建立一個新的文件 |
“rb”(只讀) | 為了輸入數(shù)據(jù),打開一個二進制文件 | 出錯 |
“wb”(只寫) | 為了輸出數(shù)據(jù),打開一個二進制文件 | 建立一個新的文件 |
“ab”(追加) | 向一個二進制文件尾添加數(shù)據(jù) | 出錯 |
“r+”(讀寫) | 為了讀和寫,打開一個文本文件 | 出錯 |
“w+”(讀寫) | 為了讀和寫,建議一個新的文件 | 建立一個新的文件 |
“a+”(讀寫) | 打開一個文件,在文件尾進行讀寫 | 建立一個新的文件 |
“rb+”(讀寫) | 為了讀和寫打開一個二進制文件 | 出錯 |
“wb+”(讀寫) | 為了讀和寫,新建一個新的二進制文件 | 建立一個新的文件 |
“ab+”(讀寫) | 打開一個二進制文件,在文件尾進行讀和寫 | 建立一個新的文件 |
4.fopen函數(shù)的使用?
程序員通過給fopen函數(shù)進行傳參(傳:需要打開的文件名和和某種打開方式),然后將返回一個文件的地址,用一個文件指針進行接收。
同樣地,文件的打開操作也會有失敗的時候,當(dāng)文件打開失敗時,fopen函數(shù)會返回空指針。所以我們在對文件進行處理時需要進行判空。
#include<stdio.h>
int main()
{
//打開文件
//"w"只寫操作,當(dāng)該路徑下沒有該文件名的文件的時候,會新建一個文件。
FILE* pf = fopen("text.txt", "w");
if (pf == NULL)
{
perror("fopen");
return 0;
}
else
{
//文件處理...
//關(guān)閉文件
}
return 0;
}
4、文件關(guān)閉函數(shù)(fclose)?
文件的關(guān)閉操作同樣地需要一個函數(shù)來完成。
1.功能
fclose函數(shù)地功能是將指定的文件關(guān)閉,然后返回一個整數(shù)。當(dāng)文件成功關(guān)閉的時候返回0值,當(dāng)文件關(guān)閉失敗的時候返回EOF。
2.參數(shù)
FILE * stream是一個文件流,也就是所要關(guān)閉的文件。
3.流的概念
流是一個高度抽象的概念。流的出現(xiàn)方便了程序員對于數(shù)據(jù)的存儲。不需要程序員對存入不同設(shè)備的數(shù)據(jù)用不同的方式來存儲,而可以將數(shù)據(jù)放入流中,讓C語言去處理流中的數(shù)據(jù)存入不同的設(shè)備。
4.fclose函數(shù)的使用
在使用fclose函數(shù)將文件進行關(guān)閉后,最好將指向這個文件的指針pf置為空,來防止野指針。?文章來源:http://www.zghlxwxcb.cn/news/detail-717311.html
#include<stdio.h>
int main()
{
//打開文件
//"w"只寫操作,當(dāng)該路徑下沒有該文件名的文件的時候,會新建一個文件。
FILE* pf = fopen("text.txt", "w");
if (pf == NULL)
{
perror("fopen");
return 0;
}
else
{
//文件處理...
//關(guān)閉文件
fclose(pf);
pf = NULL;
}
return 0;
}
謝謝大家的支持!?文章來源地址http://www.zghlxwxcb.cn/news/detail-717311.html
到了這里,關(guān)于C/C++文件操作(細(xì)節(jié)滿滿,part1)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!