系统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操作范例的更多相关文章

  1. 提高生产力:文件和IO操作(ApacheCommonsIO-汉化分享)

    复制.移动.删除.比较.监控.文件读写 等文件和IO操作是编程中比较常用的功能.        幸运的是,Apache Commons IO等开源组件已经帮我们实现了.        我们可以不用重复 ...

  2. Atitit.跨语言  文件夹与文件的io操作集合  草案

    Atitit.跨语言  文件夹与文件的io操作集合  草案 1. Jdk原生的太难用了..1 2. PS: apache commons-io包,FileUtils有相关的方法,IOUtils一般是拷 ...

  3. 快速入门Python中文件读写IO是如何来操作外部数据的?

    读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘, ...

  4. Windows Phone 八、文件读写IO

    文件存储的类型 •本地应用文件: •ApplicationData.Current.LocalFolder: •漫游应用文件: •ApplicationData.Current.RoamingFold ...

  5. 文件读写IO

    摘要:本文主要总结了以下有关文件读写的IO,系统调用与库函数. 1.初级IO函数:close,creat,lseek,open,write 文件描述符是一个整型数 1.1close 1.2int cr ...

  6. Linux文件的IO操作 一

    系统调用 系统调用: 操作系统提供给用户程序调用的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的服务 为什么用户程序不能直接访问系统内核提供的服务 为了更好地保护内核空间, ...

  7. 【java学习笔记】文件读写(IO流)

    1.字节流 FileInputStream.FileOutputStream ①FileInputStream import java.io.FileInputStream; public class ...

  8. C++中文件读写的操作

    在C++中读读写文件一般指的就是磁盘中的文本文件和二进制文件: 文本文件:以字符序列组成的文件 二进制文件:由二进制组成的文件 读写文件采用ofstream和ifstream文件流,两者可用头文件&l ...

  9. 人生苦短之Python文件的IO操作

    在Python中也有涉及到文件的相关操作,从最简单的文件读取说起 文件读取 file = open('/Users/macbookpro/Desktop/使用教程.txt', 'r', encodin ...

随机推荐

  1. c++---天梯赛---大笨钟

    ★题目: ★思路分析: 对可能的情况进行分类处理.在这里我把它们分成了3大类. ①不在敲钟时间 ②在敲钟时间但为整点 ③在敲钟时间且不为整点. 在敲钟时间段内我们可分别对晚8点前后进行分类讨论, 我们 ...

  2. JAVA:成员变量和局部变量的区别

    1.作用于不同: 局部变量的作用域仅限于定义它的方法 成员变量的作用域在整个类的内部都是可见的 2.初始值不同 JAVA会给成员变量一个初始值 JAVA不会给局部变量赋予初始值 3.在同一个方法中,不 ...

  3. [SinGuLaRiTy] Nescafe 24杯模拟赛

    [SinGularLaRiTy-1044] Copyright (c) SinGuLaRiTy 2017. All Rights Reserved. 小水塘(lagoon) 题目描述 忘川沧月的小水塘 ...

  4. Hadoop问题:The auxService:mapreduce_shuffle does not exist

    问题描述:The auxService:mapreduce_shuffle does not exist INFO mapreduce.Job: Task Id : attempt_146180833 ...

  5. 辩证看待 iostat

    前言 经常做系统分析会接触到很多有用的工具,比如 iostat,它是用来分析磁盘性能.系统 I/O 的利器. 本文将重点介绍 iostat 命令的使用,并分析容易引起误解的几个指标. iostat i ...

  6. mysql 多列索引的生效规则

    mysql中 myisam,innodb默认使用的是 Btree索引,至于btree的数据结构是怎样的都不重要,只需要知道结果,既然是索引那这个数据结构最后是排好序:就像新华字典他的目录就是按照a,b ...

  7. 2017-07-12(touch df du)

    touch 作用:修改文件时间或者创建新文件 文件三个主要的变动时间 mtime 当文件的内容发生改变的时候,就会更新这个时间 ctime 当文件的权限与属性发生改变的时候,就会更新这个时间 atim ...

  8. 优化 gruop by 语句

    默认情况下,mysql对所有的gruop by col1,col2...的字段进行排序.如果查询包含group by但用户想要避免排序结果的消耗,则可以指定order by null禁止排序. exp ...

  9. mysql根据汉字首字母排序[转]

    select  areaName  from area order by   convert(areaName USING gbk)   COLLATE   gbk_chinese_ci asc 说明 ...

  10. linux_NFS

    NFS是什么? 网络文件系统,又叫共享存储,通过网络连接让不同主机之间实现共享存储. 应用于存放图片.附件.视频等用户上传文件 相关同类应用:大型网站nfs有压力,使用moosefs(mfs),Ghu ...