【C 语言】文件操作 ( 配置文件读写 | 读取配置文件 | 函数接口形参 | 读取配置文件的逐行遍历操作 | 读取一行文本 | 查找字符 | 删除字符串前后空格 )
生活随笔
收集整理的這篇文章主要介紹了
【C 语言】文件操作 ( 配置文件读写 | 读取配置文件 | 函数接口形参 | 读取配置文件的逐行遍历操作 | 读取一行文本 | 查找字符 | 删除字符串前后空格 )
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- 一、函數(shù)接口形參
- 二、讀取配置文件的逐行遍歷操作
- 1、讀取配置文件的逐行遍歷操作
- 2、讀取一行數(shù)據(jù)
- 3、查找字符
- 4、刪除字符串前后的空格
- 5、完整代碼示例
一、函數(shù)接口形參
函數(shù)作用 : 從 char *filename 文件中 , 查找 char *key 關(guān)鍵字 對(duì)應(yīng)的 值 ; 將查找到的值 寫出到 char *value 指針指向的內(nèi)存中 , 將值的長(zhǎng)度寫出到 int *value_len 指向的內(nèi)存中 ;
代碼示例 :
/*** @brief read_config_file 讀取配置文件* @param filename 文件名* @param key 鍵* @param value 值* @param value_len 值字符串長(zhǎng)度* @return*/ int read_config_file(char *filename /*in*/, char *key /*in*/, char *value/*in out*/, int *value_len /*out*/)二、讀取配置文件的逐行遍歷操作
1、讀取配置文件的逐行遍歷操作
讀取配置文件的逐行遍歷操作 :
- 讀取一行文本數(shù)據(jù)
- 先判斷該行數(shù)據(jù)中, 是否包含 ‘=’ 字符
- 然后查找該行數(shù)據(jù)中 , 是否存在 Key 關(guān)鍵字字符串
- 如果存在 Key 關(guān)鍵字 , 則繼續(xù)查找 Key 關(guān)鍵字右側(cè)是否有 ‘=’ 字符
- 如果找到了 ‘=’ 字符 , 則越過該字符 , 剩下的就是 Value 字符串信息 ;
- 刪除 Value 字符串左右兩側(cè)的空格信息
- 使用兩個(gè)指針分別指向 Value 字符串兩側(cè) ;
2、讀取一行數(shù)據(jù)
// 獲取一行數(shù)據(jù)fgets(line_buffer, MAX_LINE, fp);
3、查找字符
// 查找 '=' 字符p = strchr(line_buffer, '=');// 如果沒有找到 '=' 字符 , 則退出 , 繼續(xù)執(zhí)行下一次循環(huán)if (p == NULL){continue;}
4、刪除字符串前后的空格
// 獲取 Value 起始位置for(;;){// 去掉開始位置的空格if (*p == ' '){p ++ ;}else{start = p;if (*start == '\n'){// 進(jìn)入到該分支 , 說明 Value 值是空的// 直接退出即可goto End;}break;}}// 獲取 Value 結(jié)束位置// 從 Value 的不為空格的位置開始遍歷for(;;){// 遇到空格或回車 , 說明讀取到了最后的位置, 或者換行位置if ((*p == ' ' || *p == '\n')){break;}else{p ++;}}end = p;
5、完整代碼示例
// 逐行遍歷 配置文件 中的文本數(shù)據(jù)while (!feof(fp)){// 清空 line_buffer 中的遺留數(shù)據(jù) , 避免被上一次寫入的數(shù)據(jù)干擾memset(line_buffer, 0, sizeof(line_buffer));// 獲取一行數(shù)據(jù)fgets(line_buffer, MAX_LINE, fp);// 查找 '=' 字符p = strchr(line_buffer, '=');// 如果沒有找到 '=' 字符 , 則退出 , 繼續(xù)執(zhí)行下一次循環(huán)if (p == NULL){continue;}// 查找 Key 值// 如果找到了 Key 關(guān)鍵字 , 則返回的指針 p 指向 Key 關(guān)鍵字出現(xiàn)的首地址中p = strstr(line_buffer, key);// 如果沒有找到 Key 關(guān)鍵字 , 退出執(zhí)行下一次循環(huán)換if (p == NULL){continue;}// 越過 Key 關(guān)鍵字 , 從 Key 關(guān)鍵字后面的內(nèi)容遍歷p = p + strlen(key);// 查找 '=' 字符p = strchr(p, '=');// 如果沒有找到 '=' 字符 , 則退出 , 繼續(xù)執(zhí)行下一次循環(huán)if (p == NULL){continue;}// 越過 '=' 字符 , 從 '=' 字符 后面的內(nèi)容遍歷p = p + 1;// 獲取 Value 起始位置for(;;){// 去掉開始位置的空格if (*p == ' '){p ++ ;}else{start = p;if (*start == '\n'){// 進(jìn)入到該分支 , 說明 Value 值是空的// 直接退出即可goto End;}break;}}// 獲取 Value 結(jié)束位置// 從 Value 的不為空格的位置開始遍歷for(;;){// 遇到空格或回車 , 說明讀取到了最后的位置, 或者換行位置if ((*p == ' ' || *p == '\n')){break;}else{p ++;}}end = p;// 通過 間接賦值 設(shè)置 Value 值長(zhǎng)度*value_len = end - start;// 通過 間接賦值 設(shè)置 Value 值數(shù)據(jù)內(nèi)容memcpy(value, start, end - start);}
總結(jié)
以上是生活随笔為你收集整理的【C 语言】文件操作 ( 配置文件读写 | 读取配置文件 | 函数接口形参 | 读取配置文件的逐行遍历操作 | 读取一行文本 | 查找字符 | 删除字符串前后空格 )的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【C 语言】文件操作 ( 配置文件读写
- 下一篇: 【C 语言】文件操作 ( 配置文件读写