C C 檔案字串處理

2021-09-27 03:55:19 字數 4301 閱讀 2286

c語言中沒有輸入輸出語句,所有的輸入輸出功能都用 ansi c提供的一組標準庫函式來實現。檔案操作標準庫函式有:

檔案的開啟操作 :fopen

file * fopen(char *filename, char *mode);
檔案的關閉操作 :fclose

int fclose(file *fp);
表1 mode模式 模式

含 義說 明r唯讀

檔案必須存在,否則開啟失敗w只寫

若檔案存在,則清除原檔案內容後寫入;否則,新建檔案後寫入

a追加只寫

若檔案存在,則位置指標移到檔案末尾,在檔案尾部追加寫人,故該方式不 刪除原檔案資料;若檔案不存在,則開啟失敗

r+讀寫

檔案必須存在。在唯讀 r 的基礎上加 '+' 表示增加可寫的功能。下同

w+讀寫

新建乙個檔案,先向該檔案中寫人資料,然後可從該檔案中讀取資料

a+讀寫

在」 a」模式的基礎上,增加可讀功能

rb二進位制讀

功能同模式」r」,區別:b表示以二進位制模式開啟。下同

wb二進位制寫

功能同模式「w」。二進位制模式

ab二進位制追加

功能同模式」a」。二進位制模式

rb+二進位制讀寫

功能同模式"r+」。二進位制模式

wb+二進位制讀寫

功能同模式」w+」。二進位制模式

ab+二進位制讀寫

功能同模式」a+」。二進位制模式

返回值:開啟成功,返回該檔案對應的 file 型別的指標;開啟失敗,返回 null。故需定義 file 型別的指標變數,儲存該函式的返回值。可根據該函式的返回值判斷檔案開啟是否成功。

檔案的讀寫操作:

fgetc 從檔案中讀取乙個字元:int fgetc (file *fp);

putc 寫乙個字元到檔案中去:int fputc (int c, file *fp);

fgets 從檔案中讀取乙個字串:char * fgets (char *s, int size, file * fp);

fputs 寫乙個字串到檔案中去:int fputs (const char *str, file *fp);

fprintf 往檔案中寫格式化資料:int fscanf (檔案指標,格式控制串,輸入位址表列);

fscanf 格式化讀取檔案中資料:int fprintf (檔案指標,格式控制串,輸出表列);

fread 以二進位制形式讀取檔案中的資料:unsigned fread (void *buf, unsigned size, unsigned count, file* fp);

fwrite 以二進位制形式寫資料到檔案中去:unsigned fwrite (const void *bufaunsigned size,unsigned count,file* fp);

介紹如何從檔案讀取流和向檔案寫入流。這就需要用到 c++ 中另乙個標準庫fstream,它定義了三個新的資料型別:

資料型別

描述ofstream

該資料型別表示輸出檔案流,用於建立檔案並向檔案寫入資訊。

ifstream

該資料型別表示輸入檔案流,用於從檔案讀取資訊。

fstream

該資料型別通常表示檔案流,且同時具有 ofstream 和 ifstream 兩種功能,這意味著它可以建立檔案,向檔案寫入資訊,從檔案讀取資訊。

要在 c++ 中進行檔案處理,必須在 c++ 源**檔案中包含標頭檔案 和 。

開啟檔案:

在從檔案讀取資訊或者向檔案寫入資訊之前,必須先開啟檔案。ofstreamfstream物件都可以用來開啟檔案進行寫操作,如果只需要開啟檔案進行讀操作,則使用ifstream物件。

下面是 open() 函式的標準語法,open() 函式是 fstream、ifstream 和 ofstream 物件的乙個成員。

void open(const char *filename, ios::openmode mode);
在這裡,open()成員函式的第一引數指定要開啟的檔案的名稱和位置,第二個引數定義檔案被開啟的模式。

模式標誌

描述追加模式。所有寫入都追加到檔案末尾。

ios::ate

檔案開啟後定位到檔案末尾。

ios::in

開啟檔案用於讀取。

ios::out

開啟檔案用於寫入。

ios::trunc

如果該檔案已經存在,其內容將在開啟檔案之前被截斷,即把檔案長度設為 0。

讀取方式:

(1)逐詞讀取

void readdatafromfile()

cout << endl;

}

(2) 逐行讀取

void readdatafromfile()

}

回車輸入結束

通過cin.get()檢測回車字元,判斷輸入結束。

string value;

while (std::cin >> value)

;#endif //!__config_file_reader_h__

configfilereader.cpp

#include "configfilereader.h"

#include //for snprintf

#include cconfigfilereader::cconfigfilereader(const char* filename)

cconfigfilereader::~cconfigfilereader()

char* cconfigfilereader::getconfigname(const char* name)

return value;

}int cconfigfilereader::setconfi**alue(const char* name, const char* value)

else

return _writefile();

}void cconfigfilereader::_loadfile(const char* filename)

fclose(fp);

m_load_ok = true;

}int cconfigfilereader::_writefile(const char* filename)

else

if (fp == null)

char szpaire[128];

std::map::iterator it = m_config_map.begin();

for (; it != m_config_map.end(); it++) }

fclose(fp);

return 0;

}void cconfigfilereader::_parseline(char* line)

}char* cconfigfilereader::_trimspace(char* name)

if (strlen(start_pos) == 0)

return null;

// remove ending space or tab

char* end_pos = name + strlen(name) - 1;

while ((*end_pos == ' ') || (*end_pos == '\t'))

int len = (int)(end_pos - start_pos) + 1;

if (len <= 0)

return null;

return start_pos;

}

main.cpp

#include #include #include "configfilereader.h"

using namespace std;

int main(void)

cout <<"read context ; "<< logfilepath << endl;

getchar();

return 0;

}

C C 字串處理函式

c include 1.字串長度 extern int strlen char s 返回s的長度,不包括結束符null 2.字串比較 extern int strcmp char s1,char s2 extern int strncmp char s1,char s2,int n 比較字串s1和s...

C C 字串處理函式

c char st 100 1.字串長度 strlen st 2.字串比較 strcmp st1,st2 strncmp st1,st2,n 把st1,st2的前n個進行比較。3.附加 strcat st1,st2 strncat st1,st2,n n表示連線上st2的前n個給st1,在最後不要加...

C C 字串處理函式

c char st 100 1.字串長度 strlen st 2.字串比較 strcmp st1,st2 strncmp st1,st2,n 把st1,st2的前n個進行比較。3.附加 strcat st1,st2 strncat st1,st2,n n表示連線上st2的前n個給st1,在最後不要加...