LINUX读取写入文件并打印出来(实例用的.txt)

参考我的文件管理笔记:linux 文件系统与操作
1.在/home下使用open()函数打开一个名为“姓名.txt”的文件,权限为666,如果该文件不存在,则创建此文件,并向其中写入字符串“hello 学号,this is world”,然后把写入的内容读取出来并在终端上显示输出。

先创建文件,然后chmod 666 文件

写代码:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>

int main()
{
 int fd=0;
 char buf[50]="hello 541913430301,this is world\n";
 char filename[20]="/home/chenhao.txt";

 fd=open(filename,O_CREAT|O_RDWR);
if(fd==-1)
{
printf("open error\n");
return -1;
}

write(fd,buf,sizeof(buf));
read(fd,buf,sizeof(buf));
close(fd);

fd=open(filename,O_CREAT|O_RDWR,666);
if(fd==-1)
{
printf("open error\n");
return -1;
}
write(fd,buf,sizeof(buf));
close(fd);

//直接读出

fd=open(filename,O_RDONLY);
if(fd==-1)
{
perror("file open error.\n");
return -1;
}
off_t f_size=0;
f_size=lseek(fd,0,SEEK_END) ; //获取文件长度 
lseek(fd,0,SEEK_SET);
while(lseek(fd,0,SEEK_CUR)!=f_size)
{
        read(fd,buf,sizeof(buf));
        printf("%s\n",buf);
}
close(fd);
return 0;
}

在这里插入图片描述
在这里插入图片描述
自己输入的是这样的
//写数据
int len = 0;
char buf[100] = { 0 };
scanf("%s", buf);
len = strlen(buf);
write(fd, buf, len);

在这里插入图片描述
在这里插入图片描述
这里的lseek可以看我的笔记
参考我的文件管理笔记:linux 文件系统与操作
在这里插入图片描述
效果:

在这里插入图片描述

下面在贴一个自己输入和读取的

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
int main()
{
	int fd = 0;
	//路径中的目录若不存在将导致文件创建失败
	char filename[20] = "/home/itheima/a.txt";
	//打开文件
	fd = open(filename, O_RDWR | O_EXCL | O_TRUNC, S_IRWXG);
	if (fd == -1){		//判断文件是否成功打开
		perror("file open error.\n");
		exit(-1);
	}
	//写数据
	int len = 0;
	char buf[100] = { 0 };
	scanf("%s", buf);
	len = strlen(buf);
	write(fd, buf, len);
	close(fd);							//关闭文件
	printf("---------------------\n");
	//读取文件
	fd = open(filename, O_RDONLY);			//再次打开文件
	if (fd == -1){
		perror("file open error.\n");
		exit(-1);
	}
	off_t f_size = 0;
	f_size = lseek(fd, 0, SEEK_END);    		//获取文件长度
	lseek(fd, 0, SEEK_SET);				//设置文件读写位置
	while (lseek(fd, 0, SEEK_CUR) != f_size)	//读取文件
	{
		read(fd, buf, 1024);
		printf("%s\n", buf);
	}
	close(fd);
	return 0;
}

在这里插入图片描述

  • 7
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值