C语言 IO函数练习

将任意文件中的数据打印到终端上

cpp 复制代码
#include <stdio.h>

int main(int argc, const char *argv[])
{
	if(argc < 2)
	{
		printf("文件名未输入,请输入文件名!\n");
		return -1;
	}
	
	//打开文件
	FILE* fo = fopen(argv[1],"r");
	if(fo == NULL)
	{
		perror("fopen");
		return -1;
	}
	
	//将任意文件中的数据打印到终端上
	char data;
	while(fread(&data, 1, sizeof(data), fo) == sizeof(data))
	{
		printf("%c", data);
	}

	//关闭文件
	fclose(fo);	
	
	return 0;
}

用read和口write实现文件拷贝

cpp 复制代码
#include <stdio.h>

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>

// 用read和口write实现文件拷贝;
int main(int argc, const char *argv[])
{
	int fo = open(argv[1], O_RDONLY);
	if(fo < 0)
	{
		perror("open");
		return -1;
	}
	printf("fo = %d\n", fo);
	
	//需要拷贝的文件
	int fo2 = open(argv[2], O_WRONLY);
	if(fo2 < 0)
	{
		perror("open");
		return -1;
	}

	ssize_t res;
	char str[100];
	//循环读取文件中的数据
	while(1)
	{
		bzero(str, sizeof(str));
		res = read(fo, str, sizeof(str));
		//判断read的返回值
		if(res == 0)
		{
			printf("文件读取完毕!\n");
			break;
		}
		else if(res < 0)
		{
			perror("read");
			break;
		}
		//写入文件
		write(fo2, str, res);
	}

	//关闭文件
	if( close(fo) < 0 && close(fo2) < 0 )
	{
		perror("close");
		return -1;
	}

	return 0;
}
相关推荐
自强的小白20 分钟前
重点!起始时间和结束时间与创建时间和修改时间的区别(localdate与LocaldateTIME区别)以及增删改查什么时候设置目前时间(添加和更新员工时)
java
雪的季节31 分钟前
Python 线程同步与异步编程 全解析
java·开发语言
吃饱了得干活42 分钟前
缓存与数据库一致性:从理论到实战
java·后端·面试
520拼好饭被践踏1 小时前
JAVA+Agent学习day22
java·开发语言·后端·学习
笨蛋不要掉眼泪1 小时前
Java虚拟机:堆的参数配置
java·开发语言·jvm
霸道流氓气质1 小时前
SpringBoot中使用JasperReports 报表引擎 — 介绍、原理与使用实践
java·spring boot·后端
花生了什么事o1 小时前
DDD 分层架构:六层分层架构
java·架构·ddd
Y3815326621 小时前
3 种 SERP 数据处理方案对比:流式 / 批处理 / 缓存
java·spring·缓存
小肝一下1 小时前
7. 库制作与原理
linux·c语言·操作系统·bash·shell·动静态库
春生野草1 小时前
C基础--八大排序(个人笔记)
c语言·笔记·排序算法