linux 学习记录 文件编程

**

linux学习

**

文件的系统编程

open函数
包含头文件

#include<sys/types.h> 
#include<sys/stat.h> 
#include<fcntl.h>

定义函数

int open( const char * pathname,int flags);
int open( const char * pathname,int flags,mode_t mode); 

int open( const char * pathname,mode_t mode); 

int fd;
fd=open("./file",O_RDWR|O_CREAT,0600);

参数详情链接:https://blog.csdn.net/tianmohust/article/details/6860654
write函数

#include<unistd.h>

ssize_t write (int fd, const void * buf, size_t count); 

参数说明,fd为文件的标识一般是open函数的返回值,把count个字节写入,buf中
需要注意buf是一个无类型指针,定义时可能需要char*强制转换
不完整例子:(省略OPEN函数以及相关判断)

char *buf="wo hen shuai";
write(fd,buf,strlen(buf));

返回值是写入的字节个数,read返回值也是一样
read函数

#include<unistd.h>

ssize_t read (int fd,  void * buf, size_t count); 

用法同write()

char *readbuf
readbuf=(char *)malloc(size)

lseek函数

#include <sys/types.h>
#include <unistd.h>
off_t lseek(int fd, off_t offset, int whence);

fd 表示要操作的文件描述符

offset是相对于whence(基准)的偏移量

whence 可以是SEEK_SET(文件指针开始),SEEK_CUR(文件指针当前位置) ,SEEK_END为文件指针尾

返回值:文件读写指针距文件开头的字节大小,出错,返回-1

lseek(fd,0,SEEK_SET)//设置在文件头

offset是偏移量,负数往前走,正数往后走
且lseek返回值是针对文件头偏移多少字节
所以可用n = lseek(fd,0,SEEK_END)计算文件字节n多少

标准库的文件函数

FILE * fopen(const char * path,const char * mode)
返回值位一个指针
“r” 打开文字文件只读
“w” 创建文字文件只写
“a” 增补, 如果文件不存在则创建一个
“r+” 打开一个文字文件读/写
“w+” 创建一个文字文件读/写
“a+” 打开或创建一个文件增补
“b” 二进制文件(可以和上面每一项合用)
“t” 文这文件(默认项)
size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream);
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

#include<stdio.h>
int main(){
	FILE *fp;
	char *str"hello world";
	char readbuf[128]={0};
	fp=fopen("./file.txt",w+);

	fwrite(str,sizeof(char),strlen(str),fp);
	//fwrite(str,sizeof(char)*strlen(str),1,fp);
	fssek(fp,0,SEEK_SET);
	fread(readbuf,sizeof(char),strlen(str),fp);
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值