Linux软件编程——IO编程(2)

1. IO的接口分类:

  1. 普通文件:标准IO

有缓存的IO

  1. 设备文件、通信文件:文件IO

没有缓存的IO

  1. 目录文件:目录IO

2. 普通文件:

ASCII码文件:文件中存放的内容均为能够在终端显示的ASCII码字符代码、文本文件

(fputc/fgetc, fputs/fgets, fscanf/fprintf)

二进制文件:存放二进制数据的文件音视频、图片、压缩包..(fread/fwrite)

注意:ASCII码文件是一种特殊的二进制文件。

3.二进制文件的拷贝

拷贝功能:打开两个文件流,要有一个缓存区

fread(存储读取数据的缓冲区, 单个元素的字节大小, 要读取的元素个数, 源文件流);

fwrite(待写入的缓冲区, 单个元素的字节大小, 要写入的元素个数, 目标文件流);

注:sizeof(scr[0]):单个元素字节数;sizeof(scr):数组总字节数

fread/fwrite总读写字节数 = size × nmemb

为保持拷贝前与拷贝后完全一致,就一个字节的读取,写入读取的返回值。

关于路径接收时:

  • gets:读取到用户输入的 \n(回车)时,将 \n变为 \0(字符串结束符);
  • fgets:读取到 \n 时,在 \n 后面添加 \0,最终缓冲区里会包含 \n

这张图片好看,留下来了~

今天的作业有点难,但是我居然写出来了,虽然需要在堆区开辟的字节空间大小处理的很潦草,中途还因为对strncmp的功能理解反了,但是最后完成的感觉还不错~

吃了个魏斯理的牛肉汉堡好油腻~