当前位置: 代码迷 >> 综合 >> LinuxC.基本文件IO操作
  详细解决方案

LinuxC.基本文件IO操作

热度:40   发布时间:2023-12-29 11:45:18.0

=================== 基本文件IO操作 =====================
记住一句话:Linux下一切皆文件 ,意思就是说在linux下都是对文件的操作

Windows Linux
打开 open
写入 write
读取 read
关闭 close

一、相应的函数接口
1)open函数
头文件
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
函数原型
int open(const char *pathname, int flags);
参数
pathname —>你要open的文件所在的路径名
flags —>你要以什么权限打开这个文件,有以下几种选择
O_RDONLY —》只读
O_WRONLY —》只写
O_RDWR —》可读可写
返回值
成功 —》返回文件描述符,其实就是一个没有被使用的大于0的最小整数,0 1 2 已经被使用
失败 —》-1
功能
打开或者创建一个文件

1.txt —>3
2.txt —>4
关闭1.txt
3.txt —>3

2)close函数
头文件
#include <unistd.h>
函数原型
int close(int fd);
参数
fd —》你要关闭的文件对应的文件描述符
返回值
成功 —》0
失败 —》-1
功能
关闭一个已经打开文件

3)read函数 man 2 read
头文件
#include <unistd.h>
函数原型
ssize_t read(int fd, void *buf, size_t count);
参数
fd —》你要读取的文件对应的文件描述符 你要读取谁?
buf —》保存读取信息的内存首地址 读取的数据存哪?
count —》你要读取的字节数
返回值
成功 —》返回你成功读取的字节数 这个返回值 <= count
失败 —》-1
功能
读取一个已经打开文件的数据

4)write函数
头文件
#include <unistd.h>
函数原型
ssize_t write(int fd, const void *buf, size_t count);
参数
fd —》你要写入的文件对应的文件描述符
buf —》你要写入的数据所在的缓冲区首地址
count —》你要写入的字节数
返回值
成功 —》返回你成功写入的字节数 这个返回值 <= count
失败 —》-1
功能
将数据写入一个已经打开的文件

5)lseek函数
头文件
#include <sys/types.h>
#include <unistd.h>
函数原型
off_t lseek(int fd, off_t offset, int whence);
参数
fd —》你要偏移的文件对应的文件描述符
offset —>你要偏移的长度
whence —>你开始偏移的位置,有以下几个选择
SEEK_SET —>文件起始位置
SEEK_CUR —>当前位置
SEEK_END —>文件末尾
返回值
成功 —》你实际偏移的长度
失败 —》-1
功能
实现文件光标的偏移

fgets —》fgets(DataBuf ,20 ,stdin); —》从标准输入获取 20 个字节保存到 DataBuf 中
第一种情况:如果输入的内容超过 20 字节 ,那么得到 : 19 个实际的字符 + ‘\0’
第二种情况:如果输入的内容没有达到20字节,那么得到: n 个字节 + ‘\n’ + ‘\0’

作业:
使用 write 写入一串字符串到 1.txt
使用 read 读取 1.txt 的内容
之后再将 读取的内容写 2.txt