一、文件数据输出/输入。
1、如何读取文件的数据? -> read() -> man 2 read
函数功能:read from a file descriptor
//读取一个文件描述符的数据
头文件:
#include <unistd.h>
原型:
ssize_t read(int fd, void *buf, size_t count);
参数:
fd:文件描述符
buf:数据缓冲区
count:尝试读取的字节数(愿望值)
返回值:
成功:已经成功读取到的字节数
失败:-1
例子1: 尝试从文本中读取一些数据出来。
注意:从文本文档中读取出来的数据,都是字符串。
int main(int argc,char *argv[])
{
//1. 打开目标文件
int fd;
fd = open("./test.txt",O_RDONLY);
if(fd < 0)
{
printf("open file error!\n");
}
//2. 读取数据
char buf[100] = {0};
int n;
n = read(fd,buf,5);
printf("n = %d\n",n);
printf("from file:%s\n",buf);
//3. 关闭文件
close(fd);
return 0;
}
结果:
n = 10
from file:helloworld
练习1: 重复读取一个文件,那么第二次读取的时候是在第一次基
础上继续读,还是重新读? -> 继续读
int main(int argc,char *argv[])
{
//1. 打开目标文件
int fd;
fd = open("./test.txt",O_RDONLY);
if(fd < 0)
{
printf("open file error!\n");
}
//2. 读取数据
char buf[100] = {0};
int n;
n = read(fd,buf,5);
printf("n = %d\n",n);
printf("from file:%s\n",buf); //hello
n = read(fd,buf,5);
printf("n = %d\n",n);
printf("from file:%s\n",buf); //world
//3. 关闭文件
close(fd);
return 0;
}
2、写入数据到文件中。 -> write() -> man 2 write
函数功能: write to a file descriptor
//写入数据到文件描述符中
头文件:
#include <unistd.h>
原型:
ssize_t write(int fd, const void *buf, size_t
count);
参数:
fd:文件描述符
buf:需要写入到文件中的内容
count:写入的字节数
返回值:
成功:真正写入字节数
失败:-1
例子2:尝试写一些数据到空白的文件中。
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#inclu