ubuntu学习(五)----读取文件以及光标的移动

这篇具有很好参考价值的文章主要介绍了ubuntu学习(五)----读取文件以及光标的移动。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、读取文件函数原型介绍

ssize_t read(int fd,void*buf,size_t count)

参数说明:
fd: 是文件描述符
buf:为读出数据的缓冲区;
count:   为每次读取的字节数(是请求读取的字节数,读上来的数据保存在缓冲区buf中,同时文件的当前读写位置向后移)

返回值:

 成功:返回读出的字节数
 失败:返回-1,并设置errno,如果在调用read,之前到达文件末尾,则这次read返回0

2、读取文件函数示例  

打开终端,输入以下指令:

 vi demo2.c

 接着输入如下代码:

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

int main()
{
	int fd;
	char *buf = "asdfgh!";	

	fd = open("./file1",O_RDWR);

	if(fd == -1){
		printf("open file1 failed\n");
		fd = open("./file1",O_RDWR|O_CREAT,0600);
		if(fd > 0){
			printf("create file1 success!\n");
		}
	}
	
	printf("open susceess : fd = %d\n",fd);

//	ssize_t write(int fd, const void *buf, size_t count);
	int n_write = write(fd,buf,strlen(buf));
	if(n_write != -1){
		printf("write %d byte to file\n",n_write);
	}

	char *readBuf;
	readBuf = (char *)malloc(sizeof(char)*n_write + 1);	
//	  ssize_t read(int fd, void *buf, size_t count);
	int n_read = read(fd, readBuf, n_write);
	
	printf("read %d ,context:%s\n",n_read,readBuf);
	close(fd);

	return 0;
}

保存退出后,输入如下指令:

gcc demo2.c 

./a.out

ubuntu学习(五)----读取文件以及光标的移动,linux,学习,linux,ubuntu

 3、光标移动操作

从运行结果可以看到,并未读取到内容,因为读取时候光标不在最左侧,因此需要进行光标设置。

 光标函数原型:

 off_t lseek(int fd, off_t offset, int whence);
  • 函数参数

    • fd:文件描述符

    • offset:偏移量

    • whence:位置

      • SEEK_SET:The offset is set to offset bytes. offset为0时表示文件开始位置。
      • SEEK_CUR:The offset is set to its current location plus offset bytes. offset为0时表示当前位置。
      • SEEK_END:The offset is set to the size of the file plus offset bytes. offset为0时表示结尾位置
  • 函数返回值

    • 成功返回当前位置到开始的长度
    • 失败返回-1并设置errno

 首先输入如下指令:

vi demo2.c

 输入以下代码:

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

int main()
{
	int fd;
	char *buf = "asdfghi!";	

	fd = open("./file1",O_RDWR);

	if(fd == -1){
		printf("open file1 failed\n");
		fd = open("./file1",O_RDWR|O_CREAT,0600);
		if(fd > 0){
			printf("create file1 success!\n");
		}
	}
	
	printf("open susceess : fd = %d\n",fd);
	int n_write = write(fd,buf,strlen(buf));
	if(n_write != -1){
		printf("write %d byte to file\n",n_write);
	}

	char *readBuf;
	readBuf = (char *)malloc(sizeof(char)*n_write + 1);	

	lseek(fd, 0, SEEK_SET);

	int n_read = read(fd, readBuf,100);
	
	printf("read %d ,context:%s\n",n_read,readBuf);
	close(fd);

	return 0;
}

 保存,输入以下指令:

gcc demo2.c

./a.out

 运行结果如下:

ubuntu学习(五)----读取文件以及光标的移动,linux,学习,linux,ubuntu

 文章来源地址https://www.toymoban.com/news/detail-672900.html

到了这里,关于ubuntu学习(五)----读取文件以及光标的移动的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【vim进阶】vim编辑器的分屏操作(分屏显示文件,关闭分屏,分屏间光标的移动,移动分屏)

    VIM 可以实现分屏操作,一个屏幕被多个文件给分占,有左右和上下两种分屏的方式。 左右分屏如下操作: n是数字,表示分屏的数量,n要大于等于文件个数 上下分屏如下操作: 这个命令跟上一个命令不同的是其中的参数 -on( n 是要打开的具体文件的数目:1,2,3 …) 中的 o

    2024年02月14日
    浏览(44)
  • Linux :: vim 编辑器:详解:光标移动定位内容,行间:快速定位至文本:开头 / 结尾;行内:词间跳跃

    前言:本篇是 Linux 基本操作篇章的内容! 笔者使用的环境是基于腾讯云服务器:CentOS 7.6 64bit。 学习集: C++ 入门到入土!!!学习合集 Linux 从命令到网络再到内核!学习合集 前言:已讲述了 vim 的基本操作,本文不再赘述直接上手操作! Linux :: 【简单开发篇 :: vim 编辑器:

    2024年02月07日
    浏览(58)
  • Linux | Ubuntu20.04系统使用命令从移动硬盘/U盘拷贝文件到服务器上

    *确认自己移动硬盘、U盘的格式,本文为exfat格式 查看disk默认位置 查看最后的位置,我的显示为 Device, 位置为 /dev/sdb1 ,2048, (后面省略) *注意:此时无法直接查看硬盘内容 进入Linux系统主界面,如果是user的话,获取管理员权限 挂载移动硬盘/U盘 命令如下,其中/dev/sdb1为disk默

    2024年02月14日
    浏览(54)
  • Linux 系统调用IO口,利用光标偏移实现文件复制

    用系统调用IO函数实现从一个文件读取最后2KB数据并复制到另一个文件中,源文件以只读方式打开,目标文件以只写的方式打开,若目标文件不存在,可以创建并设置初始值为0664,写出相应代码,要对出错情况有一定的处理,并能够让用户自行输入要复制的文件名。 IO口即指

    2024年02月08日
    浏览(41)
  • 【万字详细教程】Linux to go——装在移动硬盘里的Linux系统(Ubuntu22.04)制作流程;一口气解决系统安装/引导文件迁移/显卡驱动安装等问题

    如果不想看前面的废话😭,请跳转到 1.准备工具 处开始阅读。 制作基于PSSD的Linux to go系统是我很早就打算做的事情,但这毕竟不是常规的装系统,因此在这之前我也调研了许多经验贴,不过我的思路是找到一个看起来最靠谱而且步骤相对简单的帖子,然后一路跟着走下去。

    2024年02月22日
    浏览(115)
  • python读取vivo手机截图,将满屏图片文件移动别的路径

    问题之初 好多这样的图片,占用手机大量的内存,食之无味弃之可惜!那么会复制粘贴👀代码的我们我们今天就把这些图片筛选清理掉。 原有逻辑的基础上,加入了一些有趣的注释,以提升代码的可读性和娱乐性。希望您喜欢这个可爱又有趣的版本! 这个完整的 代码可以

    2024年02月07日
    浏览(47)
  • 【linux】:模拟文件基本操作以及文件在磁盘中如何存储的学习

        文章目录 前言 一、模拟C库文件操作 二、磁盘文件 总结   经过我们上一篇对linux系统文件操作的学习想必我们已经会使用系统文件接口了,今天我们就用系统文件接口来封装一个像C语言库那样的文件操作函数的函数来加深我们对文件操作的学习。   首先我们创建相应的

    2023年04月14日
    浏览(44)
  • 1.Unity中c#代码学习(读取物体名称+位置+移动)

    Ctrl + K + C 批量注释 Ctrl + K + U 批量取消注释 Debug.Log(\\\"**\\\");输出“**”中内容 GameObject obj = this.gameObject; this表示当前指代的物品 GameObject表示游戏中物体 Debug.Log(\\\"** 物体名字:\\\" + this.gameObject.name); this.gameObject.name直接调用类名 string name = obj.name; string 是c#中的字符串类型 Debug.Log(\\\"**

    2023年04月11日
    浏览(47)
  • Python读取文件相对路径理解以及文件读取路径格式

    绝对路径 :指的是是当前文件在 计算机磁盘中存放的具体位置 就是死的,物理上面的 相对路径 :指的是文件 相对于当前的py文件所处的位置 。就是参照py文件来说明路径,参照物嘛 读取文件路径方式(path.xls文件为例子)   执行命令的py文件同path.xls文件在同一个目录an

    2024年02月06日
    浏览(45)
  • 【uniapp】存储数据到本地文件以及读取本地文件数据

          可能存在的问题:                 1、高版本的安卓系统可能在文件系统中看不到文件但是可以读取                 2、该方法在安卓10系统中可能会有问题  

    2024年02月11日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包