嵌入式开发学习———Linux环境下IO进程线程学习(一)

IO的基本概念

IO(输入输出)是计算机与外部设备或文件交换数据的过程,分为输入(如键盘、文件读取)和输出(如屏幕显示、文件写入)。

文件IO

文件IO通过系统调用直接操作文件描述符,属于低级IO,不提供缓冲机制。常用函数包括open()read()write()close()等。

c 复制代码
#include <fcntl.h>
#include <unistd.h>

int fd = open("file.txt", O_RDWR);
char buf[100];
read(fd, buf, sizeof(buf));
write(fd, "data", 4);
close(fd);

标准IO

标准IO通过文件指针(FILE*)操作,提供缓冲机制,效率更高。常用函数包括fopen()fread()fwrite()fclose()等。

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

FILE* fp = fopen("file.txt", "r+");
char buf[100];
fread(buf, 1, sizeof(buf), fp);
fwrite("data", 1, 4, fp);
fclose(fp);

主要区别

  • 文件IO:直接系统调用,无缓冲,需手动管理细节。
  • 标准IO:封装系统调用,带缓冲,操作更高效简洁。

作业 :

1.输入一个文件名,默认文件存在,实现这个文件的下载

循环读取输入的文件,把读取的数据存到另一个文件中

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

int main(int argc, const char *argv[])
{
	//创建两个文件流指针
	FILE *srcfp=NULL,*destfp=NULL;

	//打开默认存在的文件并设置为只读模式
	srcfp=fopen("./file1","r");
	if(srcfp==NULL)
	{
		ERROR_MSG("fopen error");
	}
	
	//打开目标文件并设置为只写模式,不存在则创建,存在则覆盖文件
	destfp=fopen("./file2","w");
	if(destfp==NULL)
	{
		ERROR_MSG("fopen error");
	}

	//定义一个数组当缓存区
	char buf[1024]="";

	//循环读取源文件并写入目标文件
	while(fgets(buf,sizeof(buf),srcfp)!=NULL)
	{
		fputs(buf,destfp);
		bzero(buf,sizeof(buf));
	}
    
    fclose(srcfp); 
    fclose(destfp);   

	return 0;
}

运行结果:

2.输入一个文件名,默认这个文件存在的,计算文件有几行,多大字节?

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

int main(int argc, const char *argv[])
{
	//定义一个文件流指针
	FILE *srcfp=NULL;
	
	//打开默认源文件并设置为只读模式
	srcfp=fopen("./file1","r");
	if(srcfp==NULL)
	{
		ERROR_MSG("fopen error");
	}
	
	//定义一个变量记录行数
	int line=0;
	//定义一个变量接收读取的字符以便判断
	char c;

	//循环读取
	while((c=fgetc(srcfp))!=EOF)
	{
		if(c=='\n')
			line++;
	}
	printf("文本有%d行。\n",line);

	//定义一个变量接收文件字节大小
	int size=0;
	size=ftell(srcfp);
	printf("文本一共%d字节。\n",size);

    fclose(srcfp); 

	return 0;
}

运行结果:

3.牛客网理论

相关推荐
萘柰奈14 小时前
Unity学习----【进阶】TextMeshPro学习(三)--进阶知识点(TMP基础设置,材质球相关,两个辅助工具类)
学习·unity
沐矢羽14 小时前
Tomcat PUT方法任意写文件漏洞学习
学习·tomcat
好奇龙猫14 小时前
日语学习-日语知识点小记-进阶-JLPT-N1阶段蓝宝书,共120语法(10):91-100语法+考え方13
学习
向阳花开_miemie14 小时前
Android音频学习(十八)——混音流程
学习·音视频
小莞尔15 小时前
【51单片机】【protues仿真】基于51单片机的篮球计时计分器系统
c语言·stm32·单片机·嵌入式硬件·51单片机
工大一只猿15 小时前
51单片机学习
嵌入式硬件·学习·51单片机
小莞尔15 小时前
【51单片机】【protues仿真】 基于51单片机八路抢答器系统
c语言·开发语言·单片机·嵌入式硬件·51单片机
liujing1023292915 小时前
Day03_刷题niuke20250915
c语言
c0d1ng15 小时前
量子计算学习(第十四周周报)
学习·量子计算
獭.獭.15 小时前
Linux -- 信号【上】
linux·运维·服务器