【Linux】基础IO(一)


在学习C语言时,就接触过文件相关的操作,通过 fwritefread等这样的读写接口将信息写入或读出文件。但这只是在用法上进行了学习,也就是只停留在了语言层面;那么C++,JAVA这些语言又是如何进行读写的呢?

如何让使用硬件资源这个话题曾在操作系统一文提到过,今天通过基础IO一文进行讲解。

IO:IO通常指的是数据的输入和输出过程。这包括从外部设备(如键盘、鼠标、显示器、打印机等)读取数据以及向这些设备写入数据

系统调用

C语言文件IO

fwrite

fwrite是C语言标准库中的一个函数:用于将数据从内存中的缓冲区写入到文件流中。这个函数通常用于二进制文件的写操作,因为它不会对写入的数据进行任何形式的转换或格式化。
fwrite
参数:

  • ptr:指向要写入文件的内存缓冲区的指针。
  • size:每个数据项的大小(以字节为单位)。
  • count:要写入的数据项的个数。
  • stream:指向 FILE 对象的指针,表示目标文件流。

返回值: fwrite函数返回成功写入的数据项个数。如果返回值小于count,则表示发生了错误或到达了文件末尾(EOF)。

fwrite使用示例

int main()
{
   
   
	//把a中的数据写到文件中
	FILE* fp = fopen("test.txt", "w");
	if (NULL == fp)
	{
   
   
		perror("fopen::test.txt");
		return 1;
	}
	//二进制的写文件
    const char*msg="hello Linux\n";
    int cnt=5;
    while(cnt--)
    {
   
   
        fwrite(msg, strlen(msg), 1, fp);
    }

	fclose(fp);
	fp = NULL;
	return 0;
}

fwrite

fread

在C语言中,fread函数被用于从文件流中读取数据。它适用于二进制文件的读取,因为可以确保数据按照原始格式(即字节流)被读取,而不会受到任何格式转换的影响。
fread
参数:

  • ptr:这是一个指向内存的指针,用于存储从文件中读取的数据。
  • size:这代表每个数据单元的大小,单位是字节。
  • count:这表示你想要读取的数据单元的数量。
  • stream:这是一个指向FILE对象的指针,它代表了你要从中读取数据的文件流。

返回值:
fread返回成功读取的元素数量(不是字节数)。如果返回值小于count,则可能发生了错误或到达了文件末尾。

fread使用实示例

int main()
{
   
   
	FILE* fp = fopen("test.txt", "r");
	if (NULL == fp)
	{
   
   
		perror("fopen::test.txt");
		return 1;
	}
    char buffer[5][64];//存放从文件中读取的内容。
    int i=0;
    while(1)
    {
   
   
        size_t rd = fread(buffer[i++], sizeof(buffer), 1, fp);//存放到二维数组中
        if (rd<1)
        {
   
   
            break;
        }
    }
    while(i--)
    {
   
   
        printf("%s",buffer[i]);//打印
    }
   
	fclose(fp);
	fp = NULL;
	return 0;
}

fread

除此之外还有很多的读写及文件操作接口,这里简单进行汇总,具体使用请参考——C语言文件操作

文件操作函数 功能
fopen 打开文件
fclose 关闭文件
fputc 写入一个字符
fgetc 读取一个字符
fputs 写入一个字符串
fgets 读取一个字符串
fprintf 格式化写入数据
fscanf 格式化读取数据
fwrite 向二进制文件写入数据
fread 从二进制文件读取数据
fseek 设置文件指针的位置
ftell 计算当前文件指针相对于起始位置的偏移量
rewind 设置文件指针到文件的起始位置
ferror 判断文件操作过程中是否发生错误
feof 判断文件指针是否读取到文件末尾

默认打开的三个流

在C语言中,程序一运行起来,就会默认打开三个流:

  • stdin - 标准输⼊流,在大多数的环境中从键盘输入
  • stdout - 标准输出流,大多数的环境中输出至显示器界面
  • stderr - 标准错误流,大多数环境中输出到显示器界面

正是默认打开了这三个流,使用scanfprintf等函数就可以直接进行输入输出操作的
scanf

printf

scanf,fgets使用示例

int main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值