文件操作的系统调用之write ,close, lseek


write:

#include <unistd.h>
ssize_t write(int fd, const void *buf, size_t count);

fd:要写入的文件的描述符。
buf:要写入的数据所存放的缓冲区。
count:要写入的字节数,并不是缓冲区的大小
返回值:若成功返回已写的字节数,出错则返回-1并设置变量errno的值。

int main3()
{
	int fd = open("b.c",O_WRONLY | O_CREAT,0777);
	if(fd == -1)
	{
		perror("open ");
		return -1;
	}
	
	char buf[SIZE] = {0};//设置一个缓冲区
	while(1)
	{
		fgets(buf,SIZE,stdin);
		if(strncmp ("end",buf,3) == 0)//输入end时退出循环
			break;
		//返回值
		ssize_t ret = write (fd,buf,strlen(buf));
		if(ret == -1)
		{
			perror("write ");
		}
		printf("要写的字节数:%d, 实际写的字节数:%d\n",SIZE,ret);
	}
	
	close(fd);
	return 0;
}


/*
close()系统调用关闭一个打开的文件。

#include <unistd.h>
int close(int fd);
Returns 0 on success, or –1 on error  
  
各参数及返回值的含义如下:
fd:要关闭的文件的描述符。
返回值:若成功返回0,出错则返回-1。
*/

/*
lseek:
#include <sys/types.h>
#include <unistd.h>
off_t lseek(int fildes, off_t offset, int whence);
返回值:成功返回文件偏移量,失败返回-1

参数whence必需是以下三个常量之一:
SEEK_SET:将文件偏移量设置在距文件开始处offset个字节。
SEEK_CUR:将文件偏移量设置在其当前值加offset,offset可正可负。
SEEK_END:将文件偏移量设置为文件长度加offset,offset可正可负。

*/
int main()
{   //打开要读的文件
	int fd = open("b.c",O_WRONLY | O_CREAT,0777);
	if(fd == -1)
	{
		perror("open ");
		return -1;
	}
	
	lseek (fd,10,SEEK_CUR);//设置偏移指针
	
	char *buf = "hello";
	
	write (fd,buf,strlen(buf));
	
	close(fd);
	return 0;
}



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值