参考我的文件管理笔记: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;
}
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/qq_35629971/article/details/121396664
内容来源于网络,如有侵权,请联系作者删除!