文件读写io操作范例
系统io读写,copy
int main(int argc, char **argv)
{ if(argc != 3)
{ printf("Usage: %s <src> <dst>\n", argv[0]);
exit(0);
}
int fd1, fd2; fd1 = open(argv[1], O_RDONLY);
fd2 = open(argv[2], O_CREAT | O_TRUNC | O_WRONLY);
if(fd1 == -1 || fd2 == -1) { perror("open() failed"); exit(0); }
char buf[100];
int nread;
while(1)
{ bzero(buf, 100); nread = read(fd1, buf, 100);
if(nread == 0) // hits the end of file
{ break;
} if(nread == -1)
{ perror("read() failed");
exit(0);
}
write(fd2, buf, nread); }
close(fd1); close(fd2);
return 0; }
标准io读写操作.........................
fopen-----------------------------------------------------------------fclose范例:
int main(int argc, char **argv) {
if(argc != 3) {
printf("Usage: %s <src> <dst>\n", argv[0]);
exit(0);
}
FILE *fp1 = fopen(argv[1], "r");
if(fp1 == NULL) {
fprintf(stderr, "fopen(%s) failed: %s\n", argv[1], strerror(errno));
exit(0);
}
FILE *fp2 = fopen(argv[2], "w"); if(fp2 == NULL) {
fprintf(stderr, "fopen(%s) failed: %s\n", argv[2], strerror(errno));
exit(0);
}
char *buf = calloc(5, 20);
int nread, nwrite;
while(1) { long begin = ftell(fp1);
nread = fread(buf, 20, 5, fp1); // n是真正读取到的数据块个数 n<=5 // 100 --> 5 // 98 --> 4 // 80 --> 4 // 21 --> 1 // 19 --> 0 // 1 --> 0
if(nread == 5) // 正常读取
{ char *p = buf;
while(nread > 0) {
nwrite = fwrite(p, 20, nread, fp2); // nwrite <= n
nread -= nwrite;
p += nwrite*20; }
}
else if(nread >= 0) // 到达文件尾部
{ long end = ftell(fp1);
fwrite(buf, end-begin, 1, fp2);
break;
}
else // 读取出错了
{ perror("fread() failed");
fclose(fp1);
fclose(fp2);
exit(0);
} }
fclose(fp1);
fclose(fp2);
return 0; }
fgets--------------------------------------------------------------------fputs范例:
while(1) {
char *tmp = fgets(buf, 20, fp1); // 从fp1读取一行(最多19字节)放到buf中
if(tmp == NULL) {
// 1. 遇到了错误
if(ferror(fp1)) {
perror("fgets() failed");
break;
}
// 2. 遇到了文件尾
if(feof(fp1))
{ printf("copy completed.\n");
break;
}
}
fputs(buf, fp2);
}
fgetc----------------------------------------------------------------fputc
while(1) { ch = fgetc(fp1);
if(ch == EOF)
{ // 1. 遇到错误
if(ferror(fp1))
{ perror("fgetc() failed");
break; }
// 2. 遇到文件尾
if(feof(fp1)) {
printf("copy completed.\n");
break; }
}
fputc(ch, fp2);
}
文件读写io操作范例的更多相关文章
- 提高生产力:文件和IO操作(ApacheCommonsIO-汉化分享)
复制.移动.删除.比较.监控.文件读写 等文件和IO操作是编程中比较常用的功能. 幸运的是,Apache Commons IO等开源组件已经帮我们实现了. 我们可以不用重复 ...
- Atitit.跨语言 文件夹与文件的io操作集合 草案
Atitit.跨语言 文件夹与文件的io操作集合 草案 1. Jdk原生的太难用了..1 2. PS: apache commons-io包,FileUtils有相关的方法,IOUtils一般是拷 ...
- 快速入门Python中文件读写IO是如何来操作外部数据的?
读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘, ...
- Windows Phone 八、文件读写IO
文件存储的类型 •本地应用文件: •ApplicationData.Current.LocalFolder: •漫游应用文件: •ApplicationData.Current.RoamingFold ...
- 文件读写IO
摘要:本文主要总结了以下有关文件读写的IO,系统调用与库函数. 1.初级IO函数:close,creat,lseek,open,write 文件描述符是一个整型数 1.1close 1.2int cr ...
- Linux文件的IO操作 一
系统调用 系统调用: 操作系统提供给用户程序调用的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的服务 为什么用户程序不能直接访问系统内核提供的服务 为了更好地保护内核空间, ...
- 【java学习笔记】文件读写(IO流)
1.字节流 FileInputStream.FileOutputStream ①FileInputStream import java.io.FileInputStream; public class ...
- C++中文件读写的操作
在C++中读读写文件一般指的就是磁盘中的文本文件和二进制文件: 文本文件:以字符序列组成的文件 二进制文件:由二进制组成的文件 读写文件采用ofstream和ifstream文件流,两者可用头文件&l ...
- 人生苦短之Python文件的IO操作
在Python中也有涉及到文件的相关操作,从最简单的文件读取说起 文件读取 file = open('/Users/macbookpro/Desktop/使用教程.txt', 'r', encodin ...
随机推荐
- python之hashlib、configparser、logging模块
hashlib模块 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数 ...
- STM32小结
1.GPIO 电灯 推挽输出 PB5 2.GPIO 按键 浮空输入 PA0 3.写IO高电平 HAL_GPIO_WritePin(GPIOB,GPIO_Pin_5,1); 4.读取IO电平 HAL_G ...
- 如何用SVN版本控制器将提交的文件还原到以前的版本
工具/原料 SVN乌龟软件和相关的文件 方法/步骤 在相关的文件中右击鼠标,按右图进行选择 在弹出框的地方点击我标记的地方,查看下曾经提交过的版本文件 在弹出框的地方,上面就是有版本号,下面就是我们文 ...
- PHP中put和post区别
1. 使用支持和范围的区别: PHP提供了对PUT方法的支持,在Http定义的与服务器的交互方法中,PUT是把消息本体中的消息发送到一个URL,形式上跟POST类似; PHP 提供对诸如 Netsca ...
- Access是什么?
一种使用简单的数据库软件,非常实用! 是微软的一个小型数据库,是Microsoft office 中的一个组件. Access数据库能够进行数据表设计.可视查询设计.SQL查询语言.窗体设计.报表设计 ...
- 学习总结:libevent--简单入门
libevent--简单入门 一.简介 libevent是一个c语言写的事件驱动库,轻量级,专注于网络,跨平台特性好,支持多种 I/O 多路复用.支持I/O,定时器和信号等事件,允许设置注册事件优先级 ...
- 【开发技术】Beyond Compare
黑色表示左右两侧的文件(夹)是一样的; 紫色表示右(左)侧是完全没有的,这时我们右击这个文件(夹),选择“复制到右(左)侧”即可: 红色表示两边都有这个文件(夹),但不完全相同,这时你就要权衡一下修改 ...
- xmind2013激活
参考链接:http://blog.163.com/m15999573195_1/blog/static/248705063201542622112823/
- ETL工具--kettle篇(17.10.09更新)
ETL是EXTRACT(抽取).TRANSFORM(转换).LOAD(加载)的简称,实现数据从多个异构数据源加载到数据库或其他目标地址,是数据仓库建设和维护中的重要一环也是工作量较大的一块.当前知道的 ...
- 微信小程序左右滑动切换图片酷炫效果
开门见山,先上效果吧!感觉可以的用的上的再往下看. 心动吗?那就继续往下看! 先上页面结构吧,也就是wxml文件,其实可以理解成微信自己封装过的html,这个不多说了,不懂也没必要往下看了. < ...