欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來(lái)到入門(mén)教程網(wǎng)!

C語(yǔ)言

當(dāng)前位置:主頁(yè) > 軟件編程 > C語(yǔ)言 >

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

來(lái)源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C語(yǔ)言|點(diǎn)擊: 次

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

問(wè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

問(wèn)題看似簡(jiǎn)單,實(shí)現(xiàn)過(guò)程頗費(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:一行中第一個(gè)字段的存入緩沖
  *buffer2:一行中第二個(gè)字段的存入緩沖
  */
 char linebuffer[512] = {0};
 char buffer1[512] = {0};
 char buffer2[512] = {0};

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

 /*
  * cc.cfg是文件名,r+代表可以讀寫(xiě)文件
  */
 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)找到所需要寫(xiě)的位置,所以需要寫(xiě)位置的“頭”
    */
   len -= strlen(linebuffer);
   /*
    * 實(shí)現(xiàn)文件位置的偏移,為寫(xiě)文件做準(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));
   /*
    * 寫(xiě)文件,存入所需的內(nèi)容
       */
   fprintf(fp, "%s", buffer1);
   fclose(fp);
   return;
  }
 }
return 0;
}

保存文件名為:my_sed.c

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

我們?cè)賮?lái)看文件中的內(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)椴皇前颜麄€(gè)文件的內(nèi)容裝入緩沖區(qū)中,而是一行一行的讀取,知道匹配為止,之后利用寫(xiě)文件的特性,直接覆蓋所寫(xiě)內(nèi)容即可,由此完成所需功能

網(wǎng)頁(yè)制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語(yǔ)言數(shù)據(jù)庫(kù)服務(wù)器

如果侵犯了您的權(quán)利,請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有