日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【C 语言】文件操作 ( 配置文件读写 | 读取配置文件 | 函数接口形参 | 读取配置文件的逐行遍历操作 | 读取一行文本 | 查找字符 | 删除字符串前后空格 )

發(fā)布時間:2025/6/17 编程问答 30 豆豆

文章目錄

  • 一、函數(shù)接口形參
  • 二、讀取配置文件的逐行遍歷操作
    • 1、讀取配置文件的逐行遍歷操作
    • 2、讀取一行數(shù)據(jù)
    • 3、查找字符
    • 4、刪除字符串前后的空格
    • 5、完整代碼示例





一、函數(shù)接口形參



函數(shù)作用 : 從 char *filename 文件中 , 查找 char *key 關(guān)鍵字 對應(yīng)的 值 ; 將查找到的值 寫出到 char *value 指針指向的內(nèi)存中 , 將值的長度寫出到 int *value_len 指向的內(nèi)存中 ;


代碼示例 :

/*** @brief read_config_file 讀取配置文件* @param filename 文件名* @param key 鍵* @param value 值* @param value_len 值字符串長度* @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è)的空格信息
  • 使用兩個指針分別指向 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'){// 進入到該分支 , 說明 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'){// 進入到該分支 , 說明 Value 值是空的// 直接退出即可goto End;}break;}}// 獲取 Value 結(jié)束位置// 從 Value 的不為空格的位置開始遍歷for(;;){// 遇到空格或回車 , 說明讀取到了最后的位置, 或者換行位置if ((*p == ' ' || *p == '\n')){break;}else{p ++;}}end = p;// 通過 間接賦值 設(shè)置 Value 值長度*value_len = end - start;// 通過 間接賦值 設(shè)置 Value 值數(shù)據(jù)內(nèi)容memcpy(value, start, end - start);}

總結(jié)

以上是生活随笔為你收集整理的【C 语言】文件操作 ( 配置文件读写 | 读取配置文件 | 函数接口形参 | 读取配置文件的逐行遍历操作 | 读取一行文本 | 查找字符 | 删除字符串前后空格 )的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。