8.1IO进程线程——文件IO函数

文章目录

一、思维导图

二、使用文件IO函数,实现文件的拷贝

myhead.h

c 复制代码
#ifndef __MYHEAD_H__
#define __MYHEAD_H__


#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>

#define ERR_MSG(msg) do{perror(msg);printf("%d\n",__LINE__);return -1;}while(0)
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

#endif

代码

c 复制代码
#include <myhead.h>
int main(int argc, const char *argv[])
{
	//文件IO实现文件拷贝
	umask(0);
	//打开要下载的文件
	int fd_r=open("./myfile",O_RDONLY);
	if(fd_r==-1)
	{
		ERR_MSG("open fd_r error");
	}
	//打开要下载到的文件
	int fd_w=open("./file",O_RDWR | O_CREAT | O_TRUNC,0774);
	if(fd_w==-1)
	{
		ERR_MSG("open fd_w error");
	}
	//读取下载文件的内容
	char buf[128]="";
	if(-1==read(fd_r,buf,sizeof(buf)))
	{
		ERR_MSG("read error");
	}
	//将读取到的内容下载
	if(-1==write(fd_w,buf,strlen(buf)))
	{
		ERR_MSG("write error");
	}
	//关闭文件
	close(fd_r);
	close(fd_w);
	return 0;
}

现象

三、使用标准IO函数,实现图片的拷贝

代码

c 复制代码
#include <myhead.h>
int main(int argc, const char *argv[])
{
	FILE *fp_1=fopen("./1.png","r");
	if(fp_1==NULL)
	{
		ERR_MSG("fopen myfile_1 error");
		return -1;
	}
	char arr[4096];
	FILE *fp_2=fopen("./2.png","w");
	if(fp_2==NULL)
	{
		ERR_MSG("fopen myfile_2 error");
		return -1;
	}
	ssize_t size;
	while((size=fread(arr,1,4096,fp_1))>0)
	{
		fwrite(arr,1,4096,fp_2);
	}
	fclose(fp_1);
	fclose(fp_2);
	return 0;
}

现象



四、使用文件IO函数,计算文件的大小

代码

c 复制代码
#include <myhead.h>
int main(int argc, const char *argv[])
{
	//文件IO实现文件拷贝
	umask(0);
	//打开文件
	int fd_r=open("./myfile",O_RDONLY);
	if(fd_r==-1)
	{
		ERR_MSG("open fd_r error");
	}
	//读取文件的内容并计算长度
	char buf[128]="";
	int size;
	while(1)
	{
		ssize_t set=read(fd_r,buf,sizeof(buf));
		if(set==-1)
		{
			ERR_MSG("read error");
		}
		else if(set==0)
		{
			printf("The end of the file has been reached\n");
			break;
		}
		size+=strlen(buf);
	}
	printf("%d\n",size);

	//关闭文件
	close(fd_r);
	return 0;
}

现象

The end of the file has been reached

32

五、牛客网刷题

相关推荐
学习_学习_再学习4 分钟前
ffmpeg学习记录
学习·ffmpeg
im_AMBER33 分钟前
算法笔记 10
笔记·学习·算法·leetcode
qzhqbb3 小时前
神经网络—— 学习与感知器
神经网络·学习
charlie1145141917 小时前
CSS笔记4:CSS:列表、边框、表格、背景、鼠标与常用长度单位
css·笔记·学习·css3·教程
✎ ﹏梦醒͜ღ҉繁华落℘10 小时前
FreeRTOS学习笔记(应用)-- 各种 信号量的应用场景
笔记·学习
星星火柴93610 小时前
笔记 | C++面向对象高级开发
开发语言·c++·笔记·学习
BeingACoder11 小时前
【SAA】SpringAI Alibaba学习笔记(一):SSE与WS的区别以及如何注入多个AI模型
java·笔记·学习·saa·springai
安全不再安全11 小时前
免杀技巧 - 早鸟注入详细学习笔记
linux·windows·笔记·学习·测试工具·web安全·网络安全
BreezeJuvenile12 小时前
外设模块学习(8)——HC-SR04超声波模块(STM32)
stm32·单片机·嵌入式硬件·学习·超声波测距模块·hc-sr04
LBuffer12 小时前
破解入门学习笔记题三十八
笔记·学习