一个自己定义的头文件:

文件名为 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. 其他函数-web_concurrent

    web_concurrent_start函数是并发组开始的标记.组中所有的函数是并发执行的,并发组的结束符为web_concurrent_end 函数. 在并发组中,可以包含的函数有: web_url ...

  2. C++中为什么按两次ctrl+D才能结束标准I/O

    参考资料: https://www.douban.com/group/topic/127062773/ 今天学习了C++语言的标准I/O,也就是std::cin和std::cout,但是我发现当系统在 ...

  3. 移动 Ubuntu16.04 桌面左侧的启动器到屏幕底部_设置方法

    通过命令行,对 Launcher 的位置进行一下调整. 按下 Ctrl + Alt + t 键盘组合键,调出终端,在终端中输入以下命令: gsettings set com.canonical.Uni ...

  4. S7-1200视频教程: S7-1200的功能与特点-跟我学 - 1/112

    S7-1200视频教程: S7-1200的功能与特点-跟我学 - 1/112 观看连接: http://www.elearning.siemens.com.cn/video/Course/201012 ...

  5. 浅析pplx库的设计与实现。

    主要有三部分组成,threadpool,scheduler,task. 三者关系如上图示,pplx只着重实现了task部分功能,scheduler跟threadpool只是简略实现. threadpo ...

  6. 【K8S学习笔记】初识K8S 及架构组件

    K8S是什么?发展历史 Kubernetes (简称 k8s)是 Google 在2014年开源的,对容器生命周期管理的开源平台,致力于对容器集群提供易于管理.高可用.弹性负载与故障转移的能力,提高服 ...

  7. 连接 mongodb 数据库 :

    mongodb  数据库: 安装 mongodb  数据库: 安装 mongodb 数据库网址: https://www.mongodb.com/download-center#community 检 ...

  8. Netty源码分析之自定义编解码器

    在日常的网络开发当中,协议解析都是必须的工作内容,Netty中虽然内置了基于长度.分隔符的编解码器,但在大部分场景中我们使用的都是自定义协议,所以Netty提供了  MessageToByteEnco ...

  9. disruptor架构三 使用场景 使用WorkHandler和BatchEventProcessor辅助创建消费者

    在helloWorld的实例中,我们创建Disruptor实例,然后调用getRingBuffer方法去获取RingBuffer,其实在很多时候,我们可以直接使用RingBuffer,以及其他的API ...

  10. Python 简明教程 --- 12,Python 字典

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 代码写的越急,程序跑得越慢. -- Roy Carlson 目录 Python 字典是另一种非常实用 ...