最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言實(shí)現(xiàn)修改文本文件中特定行的實(shí)現(xiàn)代碼

 更新時間:2013年06月25日 01:13:03   作者:  
最近由于項(xiàng)目需要實(shí)現(xiàn)修改文件的功能,所以,博主認(rèn)真查閱了一些資料,但是,很遺憾,并沒有太多的收獲

好的,首先我先敘述下功能要求:
其實(shí)很簡單,就是Shell中sed命令的C語言實(shí)現(xiàn),實(shí)現(xiàn)定位到所需要的字段的那一行,之后修改成需要的內(nèi)容。但是由于C語言是面向過程的語言,需要順序執(zhí)行的特點(diǎn),所以,實(shí)現(xiàn)中遇到了很多麻煩,在這里博主將實(shí)現(xiàn)的過程描述如下,以便大家參考。

問題描述:

文本內(nèi)容:

復(fù)制代碼 代碼如下:

wireless.1.authmode=1
wireless.1.compression=0
wireless.1.current_ap=ssid12
wireless.1.current_state=1
wireless.1.devname=ath0
wireless.1.enable_slave1_status=disabled
wireless.1.enable_slave2_status=disabled
wireless.1.enable_slave3_status=disabled

我需要做的就是修改第四行的內(nèi)容,使之變?yōu)椋?/P>

復(fù)制代碼 代碼如下:

wireless.1.current_state=0

問題看似簡單,實(shí)現(xiàn)過程頗費(fèi)周折。。。

這里我給出實(shí)現(xiàn)的代碼,注釋已經(jīng)加在代碼中:

復(fù)制代碼 代碼如下:

/*
 * Author:DLUTBruceZhang
 * Date: 2013.06.24
 */
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
int main()
{
 /*
  *linebuffer:讀取文件中的一行存入的緩沖
  *buffer1:一行中第一個字段的存入緩沖
  *buffer2:一行中第二個字段的存入緩沖
  */
 char linebuffer[512] = {0};
 char buffer1[512] = {0};
 char buffer2[512] = {0};

 int line_len = 0;
 int len = 0;
 int res;

 /*
  * cc.cfg是文件名,r+代表可以讀寫文件
  */
 FILE *fp = fopen("cc.cfg", "r+");
 if(fp == NULL)
 {
  printf("open error");
  return -1;
 }
 while(fgets(linebuffer, 512, fp))
 {
  line_len = strlen(linebuffer);
  len += line_len;
  /*
   * buffer1=wireless.1.current_state
   * buffer2=1
   */
  sscanf(linebuffer, "%[^=]=%[^=]", buffer1,buffer2);
  if(!strcmp("wireless.1.current_state", buffer1))
  {
   /*
    * 由于已經(jīng)找到所需要寫的位置,所以需要寫位置的“頭”
    */
   len -= strlen(linebuffer);
   /*
    * 實(shí)現(xiàn)文件位置的偏移,為寫文件做準(zhǔn)備
    */
   res = fseek(fp, len, SEEK_SET);
   if(res < 0)
   {
    perror("fseek");
    return -1;
   }
   strcpy(buffer2, "=0");
   /*strcat(buffer1, "=");*/
   strcat(buffer1, buffer2);
   printf("%d",strlen(buffer1));
   /*
    * 寫文件,存入所需的內(nèi)容
       */
   fprintf(fp, "%s", buffer1);
   fclose(fp);
   return;
  }
 }
return 0;
}

保存文件名為:my_sed.c

運(yùn)行效果如下:

我們再來看文件中的內(nèi)容已經(jīng)變?yōu)椋?

復(fù)制代碼 代碼如下:

wireless.1.authmode=1
wireless.1.compression=0
wireless.1.current_ap=ssid12
wireless.1.current_state=0
wireless.1.enable_slave1_status=disabled
wireless.1.enable_slave2_status=disabled
wireless.1.enable_slave3_status=disabled


實(shí)現(xiàn)原理:

這里實(shí)現(xiàn)的效率比較高,因?yàn)椴皇前颜麄€文件的內(nèi)容裝入緩沖區(qū)中,而是一行一行的讀取,知道匹配為止,之后利用寫文件的特性,直接覆蓋所寫內(nèi)容即可,由此完成所需功能

相關(guān)文章

  • C++設(shè)計(jì)類不能被繼承的方法實(shí)例講解

    C++設(shè)計(jì)類不能被繼承的方法實(shí)例講解

    在Java 中定義了關(guān)鍵字final,被final修飾的類不能被繼承,C++中如何實(shí)現(xiàn),下面我們來看一個例子
    2013-12-12
  • C語言超詳細(xì)講解棧與隊(duì)列實(shí)現(xiàn)實(shí)例

    C語言超詳細(xì)講解棧與隊(duì)列實(shí)現(xiàn)實(shí)例

    棧和隊(duì)列,嚴(yán)格意義上來說,也屬于線性表,因?yàn)樗鼈円捕加糜诖鎯壿嬯P(guān)系為?"一對一"?的數(shù)據(jù),但由于它們比較特殊,因此將其單獨(dú)作為一章,做重點(diǎn)講解
    2022-03-03
  • C++ 程序員為什么看不起php程序員

    C++ 程序員為什么看不起php程序員

    由于當(dāng)今市場狀況,各種培訓(xùn)班飛起,PHPer越來越多,學(xué)習(xí)成本很低。導(dǎo)致了很多人對PHP的誤解。其實(shí)PHP學(xué)到深入的時候,所需知識很多,并不是表面看到的那樣。另外,PHP確實(shí)嚴(yán)謹(jǐn)性不高,這個跟C++,java確實(shí)都沒法比。但是,PHP在web開發(fā)中的效率,是其他語言所不能比的
    2017-02-02
  • C語言實(shí)現(xiàn)單鏈表反轉(zhuǎn)

    C語言實(shí)現(xiàn)單鏈表反轉(zhuǎn)

    這篇文章主要介紹了C語言實(shí)現(xiàn)單鏈表反轉(zhuǎn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • VS2019+MPI配置過程的實(shí)現(xiàn)步驟

    VS2019+MPI配置過程的實(shí)現(xiàn)步驟

    本文介紹了在VS2019上配置MPI,包括下載和安裝MPI、創(chuàng)建項(xiàng)目、配置屬性、導(dǎo)入頭文件和庫文件、添加依賴項(xiàng)等步驟,具有一定的參考價值,感興趣的可以了解一下
    2024-12-12
  • C++ 位圖及位圖的實(shí)現(xiàn)原理

    C++ 位圖及位圖的實(shí)現(xiàn)原理

    位圖實(shí)際上就是一個數(shù)組,因?yàn)閿?shù)組有隨機(jī)訪問的功能,比較方便查找,這個數(shù)組一般是整形,今天通過本文給大家分享c++位圖的實(shí)現(xiàn)原理及實(shí)現(xiàn)代碼,感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • 插入排序算法之希爾排序+直接插入排序

    插入排序算法之希爾排序+直接插入排序

    這篇文章主要介紹了插入排序算法之希爾排序+直接插入排序的相關(guān)知識,本文通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-11-11
  • C++實(shí)現(xiàn)圖書館案例

    C++實(shí)現(xiàn)圖書館案例

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)圖書館案例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C++程序的五大內(nèi)存分區(qū)實(shí)例詳解

    C++程序的五大內(nèi)存分區(qū)實(shí)例詳解

    C++內(nèi)存區(qū)域,一般可分為棧內(nèi)存區(qū)、堆內(nèi)存區(qū)、全局/靜態(tài)內(nèi)存區(qū)、文字常量內(nèi)存區(qū)及程序代碼區(qū)5大分區(qū),本文就帶大家深刻的理解這5大內(nèi)存分區(qū),感興趣的可以了解一下
    2021-10-10
  • C語言代碼鏈表實(shí)現(xiàn)貪吃蛇游戲

    C語言代碼鏈表實(shí)現(xiàn)貪吃蛇游戲

    這篇文章主要為大家詳細(xì)介紹了C語言鏈表實(shí)現(xiàn)貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-01-01

最新評論

扎兰屯市| 宜丰县| 会理县| 上思县| 资源县| 德清县| 墨脱县| 青冈县| 巍山| 柘荣县| 龙泉市| 荆门市| 万安县| 托克逊县| 九龙县| 漳平市| 莆田市| 泰顺县| 磐石市| 进贤县| 白河县| 二连浩特市| 商水县| 基隆市| 石渠县| 中江县| 临颍县| 方城县| 枣庄市| 崇仁县| 台安县| 吴桥县| 繁峙县| 吉林市| 南郑县| 邓州市| 通江县| 黑水县| 长汀县| 贵阳市| 虞城县|