`
忧里修斯
  • 浏览: 428301 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

linux c 文件、字符串操作示例

阅读更多
#include <stdio> #include <stdlib> #include <string> #include <errno> #define FILE_LEN 64 #define MAX_LINE 128 #define LINE 8 int main(int argc, char *argv[]) { FILE *in, *out; char file_name[FILE_LEN]; char buf[MAX_LINE]; char outbuf[MAX_LINE]; char head[LINE]; char *p; int len; if(argc != 2){ /* 命令格式错误,正确的格式为:命令名 配置文件名 */ printf("wrong usage\n"); exit(1); } len = strlen(argv[1]); /* 求文件名长度 */ if(strcmp(&amp;argv[len - 3], "ini") != 0){ /* 比较其扩展名是否是"ini" */ printf("source file error\n"); exit(1); } in = fopen(argv[1], "rb"); /* 打开配置文件 */ if(in == NULL){ perror("fail to open"); exit(1); } strcpy(file_name, argv[1]); /* 将配置文件的扩展名改为"xml" */ strcpy(&amp;file_name[len - 3], "xml"); out = fopen(file_name, "wb"); /* 打开".xml"文件,该文件的文件名和原配置文 件一样 */ if(out == NULL){ perror("fail to open"); exit(1); } while(fgets(buf, MAX_LINE, in) != NULL){ /* 顺序读取每一行 */ len = strlen(buf); /* 去掉最后一个'\n'结束符 */ buf[len - 1] = '\0'; if(buf[0] == '#') /* 书写配置信息头 */ sprintf(outbuf, "<!-- %s -->\n", buf); else if(buf[0] == '!'){ /* 书写配置信息头 */ sprintf(outbuf, "\n", buf); strcpy(head, buf); /* 复制一份,用于后面输出 */ }else if(buf[0] = '\0') sprintf(outbuf, "%s&gt;\n\n", head); /* 遇到空行,说明一个配置信息 结束,输出配置信息结尾 */ else{ p = strtok(buf, "="); /* 将原配置文件中的一行拆分为配置选项和配置内 容 */ sprintf(outbuf, "\t%s%s&gt;\n", buf, p, buf); } if(fputs(outbuf, out) == NULL){ /* 将准备好的输出信息输出,每一行输出一 次 */ perror("fail to write"); exit(1); } } if(errno != 0){ /* 循环结束,判断是否是因为文件读操作出错而退出 */ perror("fail to read"); exit(1); } fclose(in); /* 关闭文件 */ fclose(out); return 0; }</errno></string></stdlib></stdio>
分享到:
评论

相关推荐

    Linux C 函数使用手册

    手册主要涉及内容大致如下:用户组、信号处理、内存控制、字符测试、接口处理、文件操作、日期时间、环境变量、终端控制、进程操作、数学函数、字符串转换、数据结构及算法、内存及字符串操作等。

    linux下C++动态链接C++库示例

    这些符号都是唯一的字符串,从而把各个函数在程序、库、目标文件中区分开来。 在C中,符号名正是函数名:strcpy函数的符号名就是“strcpy”,等等。 这可能是因为两个非静态函数的名字一定各不相同的缘故。 而C++...

    cmd操作命令和linux命令大全收集

    dir 查看文件,参数:/Q显示文件及目录属系统哪个用户,/T:C显示文件创建时间,/T:A显示文件上次被访问时间,/T:W上次被修改时间 date /t 、 time /t 使用此参数即“DATE/T”、“TIME/T”将只显示当前日期和时间,...

    嵌入式高级C语言编程讲义文档

    第 8 章 字符串处理函数 第 9 章 结构体 第 10 章 链表 第 11 章 文件 第 12 章 Makefile 自用的千锋讲义文档,涵盖了C语言的各种语法、方法/函数、头文件的使用方式,讲义中还带有示例代码供测试验证,跟着...

    RED HAT LINUX 6大全

    本书全面系统地介绍了Red Hat Linux 6。全书共分为五个部分,包括35章和四个附录。第一部分为Red Hat Linux的介绍和安装;第二部分为服务配置;第三部分为系统管理;第四部分为Linux编程;第五部分为附录。本书内容...

    8cdev.rar程序示例

    Linux是文件型系统,所有硬件都会在对应的目录(/dev)下面用相应的文件表示。 在windows系统中,设备大家很好理解,像硬盘,磁盘指的是实实在在硬件。 而在文件系统的linux下面,都有对于文件与这些设备关联的,访问...

    Linux应用程序开发指南

    3.4 字符串处理 53 3.5 数据结构 55 3.5.1 链表 55 3.5.2 树 59 3.5.3 哈希表 63 3.6 GString 65 3.7 计时器函数 66 3.8 错误处理函数 67 3.9 其他实用函数 67 第4章 构件定位 69 4.1 构件的显现、映射和显示 69 4.2...

    Linux tac命令的实现示例

    1.命令简介 tac(cat 的反序)命令以行为单位反序输出文件内容,即第一行最后显示,最后一行先显示。... 指定字符串代替换行符作为行分隔标志 --help 显示帮助信息并退出 --version 显示版本信息并退出 4.常用示例

    (1)学习 Linux 内核的系统调用方法 理解并掌握 Limux 系统调用的实现框架、用户界面、参数传递、进入返回过程

    使用编译内核法和内核模块法这两种添加系统调用的方法添加一个不用传递参数的系统调用,其功能是简单输出类似“hello wold”这样的字符串。 三. 实验步骤 3.1内核编译法添加系统调用 (1)通过su root 输入密码后...

    python 实现简化路径

    此外,规范路径必须是表示绝对路径的最短字符串 # 示例 1: # 输入:"/home/" # 输出:"/home" # 解释:注意,最后一个目录名后面没有斜杠 # 示例 2: # 输入:"/../" # 输出:"/" # 解释:从根目录向上一级是不...

    cut命令使用大全

    cut 命令是 Linux 系统中的一种文本处理命令,用于截取字符串。下面是对 cut 命令的详细讲解。 语法 cut 命令的基本语法为:`cut -c num1-num2 fileName`,其中 `-c` 选项指定要截取的字符范围,`num1` 和 `num2` ...

    Linux程序开发Gtk+ Gnome库

    3.4 字符串处理 53 3.5 数据结构 55 3.5.1 链表 55 3.5.2 树 59 3.5.3 哈希表 63 3.6 GString 65 3.7 计时器函数 66 3.8 错误处理函数 67 3.9 其他实用函数 67 第4章 构件定位 69 4.1 构件的显现、映射和显示 69 4.2...

    linux内核驱动详解2

    买书时赠送的电子稿,代码示例丰富,非常不错!全书分三个文件打包。 linuxdriver_code_tool |-- 03 | `-- 2.6内核升级工具 | |-- device-mapper-1.00.19-2.i386.rpm | |-- lvm2-2.00.25-1.01.i386.rpm | |-- ...

    linux内核驱动详解1

    买书时赠送的电子稿,代码示例丰富,非常不错!全书分三个文件打包。 linuxdriver_code_tool |-- 03 | `-- 2.6内核升级工具 | |-- device-mapper-1.00.19-2.i386.rpm | |-- lvm2-2.00.25-1.01.i386.rpm | |-- ...

    linux中echo命令的用法实例教程

    echo命令常用作打印输出字符串,根据echo帮助文件可以获得以下信息: 语法 echo [-neE][arg…] 三个参数:  -n : 关闭输出文字时的自动换行  -e : 开启转义字符功能( \ )  -E : (默认)关闭转义字符功能( \ ) 使用...

    pro_android_cpp_with_the_ndk.pdf

    3.4.1 字符串操作 3.4.2 数组操作 3.4.3 NIO操作 3.4.4 访问域 3.4.5 调用方法 3.4.6 域和方法描述符 3.5 异常处理 3.5.1 捕获异常 3.5.2 抛出异常 3.6 局部和全局引用 3.6.1 局部引用 3.6.2 全局引用 3.6.3 弱全局...

    操作系统 实验三

    3. 将上述的输出字符改为输出较长的字符串,并分析原因。 4. 将上述的输出字符改为多条输出语句,并分析原因。 七、结论 操作系统实验三旨在让学生掌握进程的概念和状态,对进程有感性的认识,并熟悉进程的创建、...

    python(1).docx

    1 算法 1.1 字符串处理 1.2 数学类 1.3 安全类 2 跨编程语言 2.1 整合 C / C++ 语言 2.2 整合 JVM 平台 2.3 整合 dotNet 平台 2.4 整合 Objective-C 语言 3 操作系统相关 3.1 文件和目录操作 3.2 本地进程间通信...

Global site tag (gtag.js) - Google Analytics