基于VS2019 C++的跨平台(Linux)开发(1.2.2)——设备管理及文件IO

本文回顾了Linux设备管理的作业,并详细讲解了文件IO分类、读写操作技巧(如scanf vs getline、lseek和fcntl系统调用)以及文件权限控制(chmod, fchmod, chown, fchown)。涉及视频文件操作、文件锁与目录操作的实例演示。
摘要由CSDN通过智能技术生成

接上一篇文章,我们来回顾作业以及学习其他的一些系统调用等等

Linux——设备管理及文件IO(一)

一、回顾作业

1、知识点

1、文件IO分类
①纯文本文件:不能进行任何修饰,且只有文字的文件;如.cpp文件、.h文件、 txt文本文件
②二进制文件: 除纯文本文件以外的文件,一般指包含ASCII及扩展ASCII字符中编写的数据或程序指令的文件,如word、ppt、音视频、图片

2、读取文件的存储方式

纯文本文件通过char数组保存;二进制文件通过int数组保存。

3、int数组和char数组使用sizeof和strlen的情况:

  • int数组保存二进制文件数据使用sizeof,因为int数组没有'\0'结束符,不能用strlen(要求以'\0'结束),避免造成的文件乱码;
  • char数组保存纯文本文件数据使用sizeof可能会多出\00等字符(当定义的数组的长度大于数组实际长度),使用strlen无问题。

strlen函数补充:

strlen函数求的是字符串的实际长度,是从开始到遇到第一个'\0'来求长度,如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到'\0'停止。

4、scanf函数存单个字符比较好,但是存很长很长的字符就要用cin函数

读取一行——cin.get 和cin.getline的比较:

cin.get

 

 

 cin.getline

 

直接使用cin >> buf;

 

(1)由结果得,get读取一行,遇到换行符时结束读取,但不对换行符进行处理,换行符仍然残留在输入缓冲区。getline读取一行,默认遇到’\n’时停止(cin.getline(array,20,'\n');),并且将’\n’直接从输入缓冲区中删除掉,不会影响下面的输入处理。

(2)cin.get(str,size);读取一行时,只能将字符串读入C风格的字符串中,即char*,但是C++的getline函数可以将字符串读入C+

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ze言

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值