C语言的文件读写操作

初学系统的时候,老师禁止我们用非系统(system primitive)自带的函数,所以,这次就用open, close, read 和 write写了一个可以读入文本文件并把内容复制到另一个文件的简单程序,废话不多说,直接上代码。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>int main(int argc, char** argv)
{if (argc != 3){printf("%d\n",argc);perror("Incorrect arguments\n");exit(0);}//首先判断参数数量是否正确int ori, cpy;if ((ori = open(argv[1], O_RDONLY)) == -1){perror("Can't open the original file\n");exit(1);}if ((cpy = open(argv[2], O_WRONLY | O_CREAT | O_TRUNC, 0666)) == -1){ perror("Can't open the original file\n");}//分别打开需要读和需要写的文件ssize_t text_read;char text;while ((text_read = read(ori, &text, 1)) > 0){if ((write(cpy, &text, 1)) == -1){perror("Can't write in the copied file\n");exit(1);}//这一步if操作可省略,作用是将源文件内容打印到输出里-----------if ((write(STDOUT_FILENO, &text, 1)) == -1){perror("Can't write in stdout\n");exit(1);}//-----------------------------------------------------}//正常的读写操作if (text_read == -1){perror("Can't read from the original file\n");exit(1);}if (close(ori) == -1){perror("Can't close original file\n");exit(1);}if (close(cpy) == -1){perror("Can't close copied file\n");exit(1);}//关闭读写的文件exit(0);
}

需要注意的是,在open()函数里,后面的flags对于文件的复制有着很大的作用。O_CREAT 是指如果没有找到需要写入的文件,那就直接新建一个文件,文件名和运行时输入的第二个参数一致。O_TRUNK 是如果写入的文件里已经有内容,那么会覆盖已有的内容,写入新的内容。
应老师的要求,没调用一次这些系统函数,都得进行一次异常处理,所以会用到如此多的 if, 没办法,不然会被老师怼。。。 ¯_(ツ)_/¯

另附上一份使用指南:
先建一个文本文件,里面随便写点什么,和此程序保存在同一目录,然后同一目录打开终端,在里面输入:

gcc -o main rw.c
./main my_text.txt copy.txt

这时,终端里会打出源文件的内容,并且目录里也会出现一个新的文件:copy.txt,点进去,里面的内容和源文件的内容是一样的,嘻嘻ヾ(≧▽≦*)o

C语言的文件读写操作相关推荐

  1. go语言基础-文件读写操作

    文章目录 一. 前言 二. 文件操作 1. 创建文件 2. 文件 打开文件 2. 打开文件 2.1 语法: 2.2 文件选项 2.2.1 文件模式 2.2.2 案例 创建一个不存在的文件 创建目录 创 ...

  2. c语言 进行文件读写操作 提示内存不能为 wrriten,吃鸡什么内存不能为wrriten | 手游网游页游攻略大全...

    发布时间:2016-12-21 cpu 最近虽然英雄联盟s7正在如火如荼地进行着,网络平台上最火的游戏却是绝地求生(吃鸡).但是不同于英雄联盟,吃鸡对于电脑的要求还是比较苛刻的,之前玩lol的主机拿来 ...

  3. C语言之文件读写探究(四):fwrite、fread(一次读写一块数据(二进制操作))

    相关博文:C语言之文件读写探究(一):fopen.fclose(文件的打开和关闭) 相关博文:C语言之文件读写探究(二):fputc.fgetc.feof(一次读写一个字符(文本操作)) 相关博文:C ...

  4. C语言之文件读写探究(三):fputs、fgets、feof(一次读写一行字符(文本操作))

    相关博文:C语言之文件读写探究(一):fopen.fclose(文件的打开和关闭) 相关博文:C语言之文件读写探究(二):fputc.fgetc.feof(一次读写一个字符(文本操作)) 相关博文:C ...

  5. C语言之文件读写探究(二):fputc、fgetc、feof(一次读写一个字符(文本操作))

    相关博文:C语言之文件读写探究(一):fopen.fclose(文件的打开和关闭) 相关博文:C语言之文件读写探究(二):fputc.fgetc.feof(一次读写一个字符(文本操作)) 相关博文:C ...

  6. C语言文件读写操作,写入数据到文件

    很早写的在linux系统下的文件读写操作,写入数据到文件,很时候初学者学习 #include <stdio.h>int writeInfoToFile(char *strFile) {in ...

  7. C语言之文件读写探究(七):随机读写文件

    相关博文:C语言之文件读写探究(一):fopen.fclose(文件的打开和关闭) 相关博文:C语言之文件读写探究(二):fputc.fgetc.feof(一次读写一个字符(文本操作)) 相关博文:C ...

  8. C语言之文件读写探究(六):fscanf、fprintf(格式化读写文件)

    相关博文:C语言之文件读写探究(一):fopen.fclose(文件的打开和关闭) 相关博文:C语言之文件读写探究(二):fputc.fgetc.feof(一次读写一个字符(文本操作)) 相关博文:C ...

  9. C语言之文件读写探究(五):rewind、ftell、fseek(文件指针偏移)

    相关博文:C语言之文件读写探究(一):fopen.fclose(文件的打开和关闭) 相关博文:C语言之文件读写探究(二):fputc.fgetc.feof(一次读写一个字符(文本操作)) 相关博文:C ...

最新文章

  1. 机器学习算法1_线性回归
  2. PHP 给图片制作水印的方法
  3. HTML5入门之新的选择器
  4. 解决properties文件乱码问题(eclipse和MyEclipse)
  5. Spring Data Pivotal Gemfire教程
  6. ITPro Magazine2006年第6期发布
  7. try-catch 异常处理的执行过程
  8. Linux笔记-centos7编译安装svn 1.14.1
  9. 图解FPGrowth 算法
  10. 文学类的论文真的不需要数据么?
  11. 【Websocket 第三篇】消息推送
  12. html音乐列表在线播放,HTML5 动感的音乐播放列表
  13. No value specified for parameter 15排查过程
  14. linux 终端分屏命令vsp(转)
  15. 好看的html5播放器,7 款超具个性的 HTML5 播放器
  16. oracle adf lov,adf oracle selectOneChoice 加 LOV 后手动设置Lov的值
  17. AndroidVideoCache简单使用及源码分析
  18. 客似云来———斐波那契数列
  19. 医疗信息通信设计和人体域网络的发展介绍
  20. ccf-csp 2015秋季真题题解

热门文章

  1. MDX基本概念和语法
  2. 北上深广领军,成都名列第五,武汉跌出前十,中国城市综合发展指标最新排名公布...
  3. canvas——绘制解锁图案
  4. 基于大数据的英语学习利器
  5. 永磁电机参数的测量获取(电感、电阻、极对数、磁链常数)
  6. NoSQLRedis的介绍和Redis安装部署,通过yum在线安装Redis,通过源码安装Redis;
  7. 写作小课堂:【写好简历】强调效果胜过强调水平、保持一致性和向上的趋势、在简历中要用好主题词。通常不超过两页(A4纸正反两面)为佳
  8. oracle数据库导入导出(windows之间)
  9. 10 种信号说明你太长时间的码不停蹄
  10. 2021惠普笔记本电脑一键重装win10系统教程分享