C语言的文件读写操作
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语言的文件读写操作相关推荐
- go语言基础-文件读写操作
文章目录 一. 前言 二. 文件操作 1. 创建文件 2. 文件 打开文件 2. 打开文件 2.1 语法: 2.2 文件选项 2.2.1 文件模式 2.2.2 案例 创建一个不存在的文件 创建目录 创 ...
- c语言 进行文件读写操作 提示内存不能为 wrriten,吃鸡什么内存不能为wrriten | 手游网游页游攻略大全...
发布时间:2016-12-21 cpu 最近虽然英雄联盟s7正在如火如荼地进行着,网络平台上最火的游戏却是绝地求生(吃鸡).但是不同于英雄联盟,吃鸡对于电脑的要求还是比较苛刻的,之前玩lol的主机拿来 ...
- C语言之文件读写探究(四):fwrite、fread(一次读写一块数据(二进制操作))
相关博文:C语言之文件读写探究(一):fopen.fclose(文件的打开和关闭) 相关博文:C语言之文件读写探究(二):fputc.fgetc.feof(一次读写一个字符(文本操作)) 相关博文:C ...
- C语言之文件读写探究(三):fputs、fgets、feof(一次读写一行字符(文本操作))
相关博文:C语言之文件读写探究(一):fopen.fclose(文件的打开和关闭) 相关博文:C语言之文件读写探究(二):fputc.fgetc.feof(一次读写一个字符(文本操作)) 相关博文:C ...
- C语言之文件读写探究(二):fputc、fgetc、feof(一次读写一个字符(文本操作))
相关博文:C语言之文件读写探究(一):fopen.fclose(文件的打开和关闭) 相关博文:C语言之文件读写探究(二):fputc.fgetc.feof(一次读写一个字符(文本操作)) 相关博文:C ...
- C语言文件读写操作,写入数据到文件
很早写的在linux系统下的文件读写操作,写入数据到文件,很时候初学者学习 #include <stdio.h>int writeInfoToFile(char *strFile) {in ...
- C语言之文件读写探究(七):随机读写文件
相关博文:C语言之文件读写探究(一):fopen.fclose(文件的打开和关闭) 相关博文:C语言之文件读写探究(二):fputc.fgetc.feof(一次读写一个字符(文本操作)) 相关博文:C ...
- C语言之文件读写探究(六):fscanf、fprintf(格式化读写文件)
相关博文:C语言之文件读写探究(一):fopen.fclose(文件的打开和关闭) 相关博文:C语言之文件读写探究(二):fputc.fgetc.feof(一次读写一个字符(文本操作)) 相关博文:C ...
- C语言之文件读写探究(五):rewind、ftell、fseek(文件指针偏移)
相关博文:C语言之文件读写探究(一):fopen.fclose(文件的打开和关闭) 相关博文:C语言之文件读写探究(二):fputc.fgetc.feof(一次读写一个字符(文本操作)) 相关博文:C ...
最新文章
- 机器学习算法1_线性回归
- PHP 给图片制作水印的方法
- HTML5入门之新的选择器
- 解决properties文件乱码问题(eclipse和MyEclipse)
- Spring Data Pivotal Gemfire教程
- ITPro Magazine2006年第6期发布
- try-catch 异常处理的执行过程
- Linux笔记-centos7编译安装svn 1.14.1
- 图解FPGrowth 算法
- 文学类的论文真的不需要数据么?
- 【Websocket 第三篇】消息推送
- html音乐列表在线播放,HTML5 动感的音乐播放列表
- No value specified for parameter 15排查过程
- linux 终端分屏命令vsp(转)
- 好看的html5播放器,7 款超具个性的 HTML5 播放器
- oracle adf lov,adf oracle selectOneChoice 加 LOV 后手动设置Lov的值
- AndroidVideoCache简单使用及源码分析
- 客似云来———斐波那契数列
- 医疗信息通信设计和人体域网络的发展介绍
- ccf-csp 2015秋季真题题解
热门文章
- MDX基本概念和语法
- 北上深广领军,成都名列第五,武汉跌出前十,中国城市综合发展指标最新排名公布...
- canvas——绘制解锁图案
- 基于大数据的英语学习利器
- 永磁电机参数的测量获取(电感、电阻、极对数、磁链常数)
- NoSQLRedis的介绍和Redis安装部署,通过yum在线安装Redis,通过源码安装Redis;
- 写作小课堂:【写好简历】强调效果胜过强调水平、保持一致性和向上的趋势、在简历中要用好主题词。通常不超过两页(A4纸正反两面)为佳
- oracle数据库导入导出(windows之间)
- 10 种信号说明你太长时间的码不停蹄
- 2021惠普笔记本电脑一键重装win10系统教程分享