C实现读写文件——对文件进行读写open(),read(),write()

功能: 文件内存储一个数字,该数字初始化为0;之后取出改数字对数字加3后再次写入文件;

期望结果:文件内数字初始化为0,可执行文件被执行一次,改数字变为3;执行两次,改数字变为6……

结果显示:

准备工作:

/*创建文件,存储值*/
# touch operation_log_id
/*文件内的值初始化为0*/
[root@localhost 20190613]# cat operation_log_id 
0

代码如下:

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <stdlib.h>

int main()
{
	int fd = 0;
	char acBuf[4096] = {0};
	int i = 0;		

	fd = open("./operation_log_id", O_RDWR|O_ASYNC);
	if(-1 == fd)
	{
		printf("error!\n");
		return 0;
	}

	/*读取文件的值*/	
	int iR = 0;
	while(iR = read(fd, acBuf, sizeof(acBuf)-1))
	{
		//printf("###%s\n", acBuf);
		break;
	}

	/*清空文件*/
	ftruncate(fd, 0);

	/*重新设置文件的偏移量*/
	lseek(fd, 0, SEEK_SET);		

    /*对读取出来的数字进行加3操作,atoi为字符串转换为整数的函数*/
	sprintf(acBuf, "%d", atoi(acBuf)+3);	

	/*写入文件*/
	write(fd, acBuf, strlen(acBuf));	

	close(fd);

	return 0;
}

解释说明:

若加清空文件,与重新设置文件偏移量。则数据会被覆盖;

否则,文件会被清空,值会更新。如上所示。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值