基本文件I/O
来源:互联网 发布:php权限管理源代码 编辑:程序博客网 时间:2024/06/04 23:29
linux编程的一个小练习,j基本文件I/O的操作;
问题:从src.txt中读出数据 ,清除每末尾的*,整理后写入到dst.txt中
必须用read,write去实现,写成小函数,可以读取一行以\n为标识符
原数据:
123**45*****
78****
整理后的数据:
123**45
78
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <fcntl.h>#include <unistd.h>/*prototype*/int get_a_line(int fd,char *buf);/*get a line*/void process_star(char *buf);/*process star*/void write_a_line(int fd,char *buf);/*write a line*/int main(){ int fd_read =0; int fd_write=0; char buf[1024]={0}; fd_read = open("src.txt",O_RDONLY); fd_write = open("dst.txt", O_CREAT|O_WRONLY|O_TRUNC,0777); while(1) { memset(buf,0,sizeof(buf)); int ret = get_a_line(fd_read,buf); if(ret == 0) { break; } process_star(buf); write_a_line(fd_write,buf); }}int get_a_line(int fd,char *buf){ int ret = 0; char *p = buf; while(1) { ret = read(fd,p,1); if(ret ==0) { return 0; } if(*p == '\n') { break; } p++; } return 1;}void process_star(char *buf){ if(strlen(buf)==1) { return; }if(strlen(buf)==2){ if(buf[0]=='*') { buf[0]='\n'; buf[1]='\0'; }} char *p = buf+strlen(buf)-2; while(1) { if(*p =='*') { *p='\0'; p--; } else if(*p!='*') { p++; *p='\n';break; } }}void write_a_line(int fd,char *buf){ int ret = 0;ret = write(fd,buf,strlen(buf));}
操作结束都可以用GDB进行调试;
打断点:b 文件.c:行号/函数名字
运行:r + 动态传参
查看代码:l
查看变量:p + 某个变量值
按行号走:n
按执行指令走:s
退出:q
- 基本文件I/O
- [0513]基本文件I/O
- 基本文件的I/O --压缩文件
- I/O 基本类
- 简单文件I/O编程之基本操作函数
- 基本文件的I/O --创建目录列表
- 文件I/O fs模块的基本用法
- Groovy基本使用(5):文件I/O 处理
- 文件I/O与标准I/O
- 标准I/O、文件I/O
- 文件I/O与标准I/O
- 异步文件 I/O
- 多媒体文件I/O
- 文件I/O
- 文件I/O操作
- 文件I/O操作
- 文件I/O操作
- 文件I/O
- 学习mina同步与异步网络通讯(一)——同步通讯
- test_chol
- 认识在变
- 算法学习笔记之冒泡排序
- poj 2481 树状数组
- 基本文件I/O
- Hoj 1789 Electricity
- ranlib的作用
- Uva11542 求矩阵的秩
- svn 批处理
- seajs使用jquery插件构造scrollbox
- 纯CSS打造兼容各大浏览器的底部固定悬浮导航
- android 应用基础
- sql server 恢复完全备份、差异备份和事务日志备份