linux文件操作练习
1.实现linux系统的cp命令
复制文件,首先我们要打开这个文件,把里面的内容复制下来,再开打另一个文件,把复制内容放进去。这样就实现了一个文件的复制。总结下来就四步:
(1)打开要原文件。
(2)读取要复制的内容。
(3)打开要复制的文件。
(4)写入复制的内容关闭文件。
代码实现如下:
int main(int argc,char **argv)
{
int fdsrc;//原文件
int fddes;//要复制文件
char *readbuf=NULL;//定义要读取的内容字符串
if(argc != 3)//如果参数不是三个则复制失败,退出。
{
printf("pararm error\n");
exit(-1);
}
fdsrc = open(argv[1],O_RDWR);//打开原文件
int n_lseek = lseek(fdsrc,0,SEEK_END);//实现光标函数测量文件大小。
lseek(fdsrc,0,SEEK_SET);//测量后要复位回到文件开始位置。
readbuf = (char *)malloc(sizeof(char)*n_lseek +8);//这里是读取内容空间大小,后面+8预留位置防止bug;
int n_read = read(fdsrc,readbuf,n_lseek); //读取了文件内容,返回读取多少字节
fddes = open(argv[2],O_RDWR|O_CREAT|O_TRUNC,0600);//打开要复制的文件,如果这里不使用O_TRUNC则会在文件内容后面复制。
int n_write = write(fddes,readbuf,strlen(readbuf));//把读取的内容写入进去。
close(fdsrc);
close(fddes);
return 0;
}
关于main(int argc,char **arhv):
argc:用来统计命令行参数的个数,要算上./a.out;
argv:
argv[0]:指向文件运行的全路径名,就是执行程序路径。
argv[1]:指向命令行中执行程序名后的第一个字符串。
argv[3]:执行程序后面第二个参数。
例如:
int main(int argc,char **argv)
{
printf("totol params:%d\n",argc);
printf("NO.1 params:%s\n",argv[0]);
printf("NO.1 params:%s\n",argv[1]);
printf("NO.1 params:%s\n",argv[2]);
return 0;
}
运行结果:
2.使用文件操作修改配置文件。
修改配置文件,我们打开一个配置文件,读取文件,找到想要修改的地方,修改它。我们把文件读入一个字符数组中,利用strstr()函数查找想要修改的段。例如我们在字符数组中查找想要的字符串“ZFYHS=”,而我们想修等于后面的字,这时字符数组中有这个子片段就会返回Z那个地方的指针,我们在计算一下想要修改的位置的偏移大小,加上这偏移大小,到达位置后修改,再次写入就完成了修改配置文件。总结为:
1.打开配置文件,读取文件内容。
2.找到想要修改字符串的位置,计算偏移量。
3.找对位置修改后,再次写入文件,完成修改。
代码如下:
int main(int argc,char **argv)
{
int fdsrc;
char *readbuf=NULL;//定义读取内容数组
fdsrc = open(argv[1],O_RDWR);//打开文件
int n_lseek = lseek(fdsrc,0,SEEK_END);//光标测量大小
lseek(fdsrc,0,SEEK_SET);//光标归位。
readbuf = (char *)malloc(sizeof(char)*n_lseek +8);//分配空间
int n_read = read(fdsrc,readbuf,n_lseek);//读取文件
char *p = strstr(readbuf,"LENG=");//找修改位置
if(p == NULL){//如果没有,退出。
printf("not found");
}
p = p+strlen("LENG=");//计算偏移量并找到修改位置
*p = '9';
lseek(fdsrc,0,SEEK_SET);光标归位,因为读取时使光标移动
int n_write = write(fdsrc,readbuf,strlen(readbuf));写入文件;
close(fdsrc);
return 0;
}
3.想文件写入一个整数和结构体。
同样是打开文件,写入想要的内容,关闭文件就ok了;
代码如下:从2中代码注释
int main()
{
int fd;
int a = 100;
int b = 0;
fd = open("./file1",O_RDWR);
int n_write = write(fd,&a,sizeof(a));//write函数中buf这个第二个参数是无类型指针,这里是整形指针,read同理;
lseek(fd,0,SEEK_SET);
//看一下写入的是否正确,打印验证一下。
int n_read = read(fd,&b,sizeof(b));
printf("read:%d",b);
close(fd);
return 0;
}
写入结构体同理,定义一个结构体,把整形数据换成结构体就可以了。
linux文件操作练习相关推荐
- linux 设计一个程序,要求打开文件 pass 所有者,第二章 Linux 文件操作
文档均来自网络,如有侵权请联系我删除文档 第二章 Linux 文件操作(4学时) 实验一文件属性和无缓冲I/O 实验目的 1.熟悉Linux文件系统属性控制 2.掌握不带缓存的文件I/O程序设计方法 ...
- Linux ● 文件操作指令
[Linux基础与Shell基础]系列文章目录 第一章 初识 Linux Linux是什么? Linux的使用原理 第二章 Linux的基本使用 ● 不同类型的常用指令 Linux ● 文件操作指令 ...
- Linux 高并发学习笔记 - Linux 文件操作函数
1.6.2 Linux 文件操作函数 Linux 高并发学习笔记 - 笔记索引 前言 关于文件操作函数这一块主要用英文文档的形势书写,因为凉皮在写文档的时候发现Markdown用起来太繁琐了.那么关于 ...
- Linux文件操作--Python模块
蓝桥云课笔记 一.认识Linux 1.快捷操作 2.查看目录结构:tree 3.绝对路径 4.新建目录 二.Linux文件操作 1.**新建空白文件** 2.**复制** 3.**删除** 4.**移 ...
- linux文件操作函数程序,linux 文件操作函数
文件操作(Linux) 常用linux函数库中的基本函数 1. close函数,关闭文件 2. creat函数,建立文件 3. dup.dup2函数,复制文件描述词 4. fcntl函数,文件描述词操 ...
- linux 文件操作函数,Linux下的文件操作函数及creat用法
编写Linux应用程序要用到如下工具: (1)编译器:GCC GCC是Linux平台下最重要的开发工具,它是GNU的C和C++编译器,其基本用法为:gcc [options] [filenames]. ...
- linux 文件操作 编程,Linux系统编程------------文件操作(基础)
一.文件操作 1.1 Linux文件系统结构 1.1.1 Linux常见系统目录 /bin : 存放普通系统可执行的命令(ls wc等) /sbin : 存放系统管理程序(fsck等) /b ...
- [搬家帖]Linux文件操作
一.文件系统 文件系统的作用就是将文件组织成包含目录.连接等存在于物理块设备中的逻辑层次结构.它不关心底层的物理块设备的结构,当对文件进行操作时,由块设备驱动程序将对某个特定块的请求映射到正确的设备上 ...
- 【文件IO】Linux 文件操作(一) —— 遍历指定目录下的所有文件
目录 一.访问目录相关函数 1.打开/访问目录 (opendir / fdopendir) 2.读取目录内容 (readdir) 3.关闭目录 (closedir) 二.遍历指定目录下的所有文件 一. ...
- linux文件操作管理,linux 文件管理操作入门
mkdir -p /root/kali/bp/shell 一路创建文件夹直到生成文件夹shell,中间没有kali文件夹的话也会自动创建生成 tar解压缩 范例一:将整个 /etc 目录下的文件全部 ...
最新文章
- oracle最小精度,【整理+原创】Oracle的计算精度与误差
- CAD输出的局部平面坐标数据配准转换到WGS84坐标系
- 火星浏览器_Facebook Libra 测试网区块浏览器上线,测试网已被重置2次
- 直接在安装了redis的Linux机器上操作redis数据存储类型--hash类型
- Dynamic CRM 2013学习笔记(二十二)插件里调用WCF服务
- ntp时间同步软件_NTP服务器的搭建和时间同步
- marqueeview更改字体颜色_安卓手机上可以编辑字体的便签软件哪个好?
- TSO、UFO、GSO、LRO、GRO和RSS介绍
- C# 解析CSV文件
- 智能语音交互之简单实例
- Guava的两种本地缓存策略
- 怎样用计算机xp命令修复软件,系统之家xp系统修复控制台命令使用方法
- EXCEL转PDF最便捷的方法
- Python大小写转换
- 联想T430i笔记本电脑无声音
- win10创意者更新是什么 Win10创意者更新升级方法
- js函数求两个数的和
- Android NDK 编译PjSip 2.6 之 搭建PjSip apk开发环境 (三)
- [局域网共享批处理文件]局域网共享时看不到工作组计算机的
- 从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界解决方案
热门文章
- 施乐202打印监视器_在“提示”框中:打印和玩游戏,DIY管道监视器支架和Android计时器...
- Typora安装包下载
- 数据库期末考试简答题背诵
- tarjan算法(强连通分量与割点)
- Java. Static 修饰类_static 表示静态,它可以修饰属性,方法和代码块。
- MQTT发布订阅和取消订阅
- 关于标书文件的书写(一)
- 来内蒙古之星选购腾势X——践行自己的生活态度
- 取消恶意绑定http://www.2345.com/?d3方面方法
- 多核时代:并行程序设计探讨(2)——并行实现技术