一个自己定义的头文件:

文件名为 xxx.h

内容:

#ifndef _MYHEAD_H   
#define _MYHEAD_H

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

#endif

红色字体必须存在,中间可以添加你所有需要的头文件

------------------------------------------------------------------

对于文件的操作

#include "myhead.h"

int main()
{
//1.打开文件
int fd = open("./1.txt",O_RDWR);
if(fd == -1)
{
printf("open file faield\n");
return -1;//异常退出
}
printf("open file OK~~~\n");

//2.将内容写入到文件
char buf[10] = "hellomeinv";
int w_size = write(fd,buf,sizeof(buf));
if(w_size == -1)
{
printf("write failed\n");
return -1;
}

/*

******************************************************

lseek函数可以用于文本文件的光标重新定位,因为打开一个文本文档后,如果需要阅读光标就是直接在文件内容的最后面,从而导致查看文档时不能查看,使用lseek()

off_t lseek(int fd, off_t offset, int whence);
随机定位符
fd:需要移动文件光标所对应的文件描述符
offest:光标的偏移量
whence:从哪里开始偏移
SEEK_SET:从文件起始位置开始偏移
SEEK_CUR:从文件的当前位置开始偏移
SEEK_END:从文件的末尾开始偏移

举例:

lseek(fd,-10,SEEK_END)  //从文件的末尾开始向前偏移10个字节的单位长度

*/
lseek(fd,-10,SEEK_END);

——————————————————

也可以不适用lessk函数而在每次操作完文件关闭文件。

代码可以是:

close(fd);

int fd = open("./1.txt",O_RDWR);
if(fd == -1)
{
printf("open file faield\n");
return -1;//异常退出
}
printf("open file OK~~~\n");

重新打开接第三步,读取文件内容。

********************************************************************************************************

lseek(fd,-10,SEEK_END);

//3.读取文件内容并且打印出来
char buff[128] = {0};
int r_size = read(fd,buff,sizeof(buff));
if (r_size == -1)
{
printf("read failed\n");
return -1;
}

//打印文件内容
printf("%s\n",buff);

close(fd);
return 0;
}

——————————————————————————————————————

如何复制一个文本文档。

#include "myhead.h"

int main()
{
//创建一个新文件
int fd = open("./3.txt",O_RDWR|O_CREAT,0777);
if (fd == -1)
{
printf("creat file failed\n");
return -1;
}
//打开要复制的文件

int fdd = open("./1.txt",O_RDWR);
if (fdd == -1)
{
printf("open 1.txt failed\n");
return -1;
}
char k[120] = {0};
int r_read,r_write;

//使用while循环实现读取和写入。
while(1)
{
r_read = read(fdd,k,sizeof(k));
r_write = write(fd,k,sizeof(k));
if (r_write == -1)
{
printf("write failed\n");
return -1;
}
printf("over\n");
break;
}
close(fdd);
close(fd);
return 0;
}

C语言笔记、文件io的操作的更多相关文章

  1. Java学习笔记--文件IO

    简介 对于任何程序设计语言,输入和输出(Input\Output)都是系统非常核心的功能,程序运行需要数据,而数据的获取往往需要跟外部系统进行通信,外部系统可能是文件.数据库.其他程序.网络.IO设备 ...

  2. 计算机二级-C语言-对文件的读写操作。链表的定义与赋值。对字符串的遍历和处理。

    //程序填空题:在此程序中,通过定义学生结构体变量,存储了学生的学号,姓名和三门课的成绩.所有学生数据均以二进制方式输出到文件中.函数fun()函数的功能是重写形参filename所指文件中最后一个学 ...

  3. Linux 0.11源码阅读笔记-文件IO流程

    文件IO流程 用户进程read.write在高速缓冲块上读写数据,高速缓冲块和块设备交换数据. 什么时机将磁盘块数据读到缓冲块? 什么时机将缓冲块数据刷到磁盘块? 函数调用关系 read/write( ...

  4. C语言对文件的读写操作以及处理CSV文件的方法

    #include <stdio.h> #define F_PATH "d:\myfile\file.txt" int main(void) { FILE *fp = N ...

  5. Scala学习笔记--文件IO

    补充: http://blog.csdn.net/lyrebing/article/details/20369445 http://developer.51cto.com/art/200907/134 ...

  6. linux 文件 IO 目录操作及文件属性

    ///练习:实现列出某个目录中所有文件属性(文件大小,文件最后修改时间,文件名)//目录名由参数传入 ./dir /home/linux#include <sys/stat.h>#incl ...

  7. go语言笔记——切片函数常见操作,增删改查和搜索、排序

    7.6.6 搜索及排序切片和数组 标准库提供了 sort 包来实现常见的搜索和排序操作.您可以使用 sort 包中的函数 func Ints(a []int) 来实现对 int 类型的切片排序.例如  ...

  8. 树莓派学习笔记——使用文件IO操作GPIO SysFs方式

    0 前言     本文描写叙述假设通过文件IO sysfs方式控制树莓派 GPIO端口.通过sysfs方式控制GPIO,先訪问/sys/class/gpio文件夹,向export文件写入GPIO编号, ...

  9. C语言基础文件读写操作

    整理了一份C语言的文件读写件操作代码,测试时打开相应的注释即可. #include <stdio.h> #include <stdlib.h> #include <uni ...

随机推荐

  1. MyBatis 实体类属性与表字段不一致

    原文链接:https://blog.csdn.net/zx48822821/java/article/details/79050735 因为数据库一般设置为表的字段不区分大小写,所以数据库中表的字段通 ...

  2. Win10 1903小白搭建Redis

    一.Redis介绍 Please Baidu. 二.安装 1)下载: 下载网址 https://github.com/microsoftarchive/redis/releases 选这个 2)安装 ...

  3. TXT文件的写入及读出

    一.文件的读出: file = open('url/data.txt','r',encoding='utf-8')#打开模式r w a,当文件在当前工作区域直接写文件名:如果不在当前工作区域要写绝对地 ...

  4. Java操作RockeMQ

    RocketMQ是阿里巴巴在2012年开源的分布式消息中间件,目前已经捐赠给Apache基金会,已经于2016年11月成为 Apache 孵化项目,相信RocketMQ的未来会发挥着越来越大的作用,将 ...

  5. Java中的I/O流全汇总,所有的I/O就一张图

    放大再看,注意视力!哈哈   一口吃不成胖子,一点一点的看: 大家都是文化人,拿图要指明出处!!!  头上↑那框,对,就是那 使用的是XMind软件画的,要源文件吗? 在这里:https://gith ...

  6. java 中的 viewUtils框架

    IoC的概念介绍 控制反转(IOC)模式(又称DI:Dependency Injection)就是Inversion of Control,控制反转.在Java开发中,IoC意 味着将你设计好的类交给 ...

  7. easymock笔记2

    EasyMock主要是为测试提供模拟数据,比如你可以模拟HttpServletRequest. EasyMock 可以mock interface和抽象java 类,但是不可以mock拥有被final ...

  8. Spring和Springboot相关知识点整理

    简介 本文主要整理一些Spring & SpringBoot应用时和相关原理的知识点,对于源码不做没有深入的讲解. 1. 思维导图 右键新窗口打开可以放大. 说明 使用@Configurati ...

  9. Laravel 中自定义 手机号和身份证号验证

    首先在 Providers\AppServiceProvider.php 文件中自定义 手机号和身份证号验证 // AppServiceProvider.php 文件 <?php namespa ...

  10. Docker 快速入门(一)- 情况介绍和安装

    欢迎您! 很高兴您想学习 Docker . 这个页面包含了如何开始使用 Docker 的循序渐进的说明. Docker 快速入门培训模块教你如何: 设置 Docker 环境(在本页) 构建并运行您的镜 ...