C语言实现修改文本文件中特定行的实现代码
来源:互联网 发布:java 随机生0和1 编辑:程序博客网 时间:2024/06/03 19:22
最近由于项目需要实现修改文件的功能,所以,博主认真查阅了一些资料,但是,很遗憾,并没有太多的收获
好的,首先我先叙述下功能要求:
其实很简单,就是Shell中sed命令的C语言实现,实现定位到所需要的字段的那一行,之后修改成需要的内容。但是由于C语言是面向过程的语言,需要顺序执行的特点,所以,实现中遇到了很多麻烦,在这里博主将实现的过程描述如下,以便大家参考。
问题描述:
文本内容:
复制代码 代码如下:
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
我需要做的就是修改第四行的内容,使之变为:
复制代码 代码如下:
wireless.1.current_state=0
问题看似简单,实现过程颇费周折。。。
这里我给出实现的代码,注释已经加在代码中:
复制代码 代码如下:
/*
* 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))
{
/*
* 由于已经找到所需要写的位置,所以需要写位置的“头”
*/
len -= strlen(linebuffer);
/*
* 实现文件位置的偏移,为写文件做准备
*/
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));
/*
* 写文件,存入所需的内容
*/
fprintf(fp, "%s", buffer1);
fclose(fp);
return;
}
}
return 0;
}
0 0
- C语言实现修改文本文件中特定行的实现代码
- C语言实现修改文本文件中特定行的实现代码
- C语言实现修改文本文件中特定行的实现代码(百度一天没找到,bing搜索十分钟就找到了)
- C语言实现修改文本文件中的特定行
- 关于C语言中文本文件的逐行读取的实现
- C语言实现删除字符串中特定的字符
- C语言实现对文本文件的操作
- C语言实现:1、实现文本文件内数据格式的统一;2、实现文本文件导入MySQL数据库。
- Java程序修改(配置)文本文件中特定行
- 安卓中在TextView中每行的特定位置修改字体颜色以及添加滚动条(纯代码实现)
- 数据结构中栈与队列的c语言代码实现
- 数据结构中线性表的c语言代码实现
- C语言中*和&的区别-代码实现说明
- 修改文件后缀的C语言实现
- C语言中实现跳转到任意行代码执行
- magento -- magento开发第一步-修改magento的代码实现特定的功能
- KMP算法的C语言代码实现
- 快速排序的C语言代码实现
- 主窗体设计
- Centos6.4安装opennebula
- ios开发常用类方法
- API--Object,String,Scanner--2
- 使用Jscex改善JavaScript异步编程体验
- C语言实现修改文本文件中特定行的实现代码
- 定向广播的几种方式
- [优先队列] HDU4006 The kth great number
- SpringMVC及JavaScript基础
- 2012年5月SAT香港真题解析
- No result defined for action
- 第十章:在Spark集群上掌握比较重要的图操作之Computing Degree
- java中Timestamp
- 编译型语言和解释型语言