linux下的系统级c语言文件读写操作

  最近初次接触Linux这么高端的东西,有种进城的感觉。进了linux,发现城里人说话做事的方式都很不一样。

个人感觉,初次接触linux主要的痛点在于命令行交互的方式,这就要求我接受城里人的思维,which is 遇到一个软件,先--help,因为城里人不会提供一个图形界面,把所有功能按钮展示在我面前。再就是文件组织形式的不同,linux的文件组织方式是用户目录式。

进入linux我首先学了关于c语言实现文件操作的内容,好几天都搞不明白。磨呀磨呀,磨了好几天,终于在今天磨明白了。遂把这块的代码发出来。

内容包括:文件的创建,读写,记录化读写。从功能和内容上来说,跟前一篇文章基本没区别。但这是在Linux下的操作,所以还是有区别的,乡下洗剪吹和城里造型沙龙的区别,恩。

参考了这篇大神的博客,大神写的非常好~http://blog.csdn.net/byxdaz/article/details/1517357,里面的例子也给的非常好。


创建open()

我们可以看到,这里有好多好多头文件呀,具体每一个里面包括什么呢,那就留给勇敢的少年去探索了。总之我的方法就是,凡是涉及文件操作相关的,就把下列这一大坨头文件直接放上去。

关于open()函数,可以百度一下,看看那里面的标志位怎么写。

#include "fcntl.h"

#include "unistd.h"

#include "sys/types.h"

#include "sys/stat.h"

#include "stdio.h"


int main (){
int fp; //其中,fp是个文件标识符,也就是传说中的FID
fp=open("work.txt",O_WRONLY|O_CREAT,777);  //每当我懒得设置权限的时候就直接777,意思是谁都可以对这个文件进行任何操作
printf(" %d \n",fp);
close(fp);
return 0;
}

这样的效果就是,在当前目录下建立了一个名叫“work”的txt文件。只要ls一下就可以看到了。


读写,read()和write()

关于read(),和write()的介绍在大神博客里有,而且也有一个例子,实现了main函数传参,并复制文件内容到另一个文件。我这里没有通过main函数传参,但也实现了对一个文件输入,并复制到另一个文件中去。当然,要实现对文件名和路径的传参也很容易。

#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#include <string.h>
#define SIZE 1024

int main (char argc,char **argv){
int fop,fwt;
char buffer[SIZE];
//打开文件
fop=open("fileA.txt",O_WRONLY|O_TRUNC|O_CREAT,S_IRUSR|S_IWUSR);
printf ("what do you want to put into the fileiA ?\n");
gets(buffer);
printf("\nNow lets see what are in the buffer %s\n",buffer);
//写文件
write(fop,buffer,strlen(buffer));
close(fop);
//读文件到内存中的buffer里
fop=open("fileA.txt",O_RDONLY);
read (fop,buffer,SIZE);
printf("\nNow lets see what are in the buffer %s\n",buffer);
//新建一个文件
fwt=open("fileB.txt",O_RDWR|O_CREAT,S_IRUSR|S_IWUSR);
//把buffer里的内容写到文件里去
write(fwt,buffer,strlen(buffer));
close(fwt);
close(fop);
return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值