首页 / LINUX / linux标准io的copy
linux标准io的copy
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux标准io的copy,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1680字,纯文字阅读大概需要3分钟。
内容图文
---恢复内容开始---
1.linux标准io的copy
#include<stdio.h>
int main(int argc,char **argv)
{
if(argc<3)
{
printf("use:mycp file1 file2\n");
return -1;
}
FILE *src=fopen(argv[1],"r");//打开源文件
if(src==NULL)
{
printf("no file!\n");
return -1;
}
FILE *dest=fopen(argv[2],"w");
if(dest==NULL)
{
printf("no file!\n");
fclose(src);
return -1;
}
int ret=fseek(src,0,SEEK_END);
long len=ftell(src);
rewind(src);
char buffer[len];
ret=fread(buffer,len,1,src);
ret=fwrite(buffer,len,1,dest);
fclose(src);
fclose(dest);
}
2.用标准IO,以读写方式打开文件f3.txt,如果该文件不存在,则创建。如果该文件已经存在,则长度截短为0。
#include<stdio.h>
#include<string.h>
#include<errno.h>
int main(int argc,char argv[])
{
FILE *fp;
if((fp=fopen("f3.txt","w+"))==NULL)//打开文件的路径和路径名,打开文件的状态
{
fprintf(stderr,"fopen() failed:%s\n",strerror(errno));
return -1;
}
fclose(fp);
return 0;
}
1:标准IO库操作是围绕着流来进行的,当我们通过fopen标准IO库函数打开一个文件,我们就使一个文件和一个IO流相关联。在这里我们把IO流和文件指针FILE*等同起来,因为所有针对IO流的操作都是通过FILE*指针来实现的。
2:标准IO库引入了IO缓存,通过累积一定量的IO数据后,然后集中写入到实际的文件中来减少系统调用,从而提高IO效率。标准IO库会自动管理内部的缓存,不需要程序员介入。然而,也正是因为我们看不到标准IO库的缓存:
3:该对象通常是一个结构,它包含了标准IO库为管理该流所需要的所有信息,包括:用于实际IO的文件描述符、指向用于该流缓冲区的指针、缓冲区的长度、当前在缓冲区中的字符数以及出错标志等等。
4: 文件缓冲
目的:尽量减少使用 read/write的调用次数
定义:系统自动的在内存中为每一个正在使用的文件开辟一个缓冲区,从内存向磁盘输出数据必须先送到内存缓冲区,装满缓冲区在一起送到磁盘中去。从磁盘中读数据,则一次从磁盘文件将一批数据读入到内存缓冲区中,然后在从缓冲区逐个的将数据送到程序的数据区。
分类:全缓存、行缓存、不缓存。
;全缓冲:在填满标准IO缓冲区后才进行实际IO操作。对于驻留在磁盘上的文件通常是由标准IO库实施全缓冲的。在一个流上执行第一次IO操作时,相关标准IO函数通常调用malloc获得需使用的缓冲区。flush,说明标准IO缓冲区的写操作。缓冲区可由标准IO历程自动冲洗,或者可调用函数fflush冲洗一个流。
;行缓存 : 这种情况下,当在输入和输出中遇到换行符时,刷新一次,标准IO库执行IO操作。这允许我们一次输出一个字符(用标准IO fputs函数),但只有在谢了一行之后才进行实际IO操作。当流涉及一个终端时(例如标准输入和输出),通常使用行缓冲。
;不缓存:不对字符进行缓冲。
---恢复内容结束---
原文:http://www.cnblogs.com/zhome/p/5074969.html
内容总结
以上是互联网集市为您收集整理的linux标准io的copy全部内容,希望文章能够帮你解决linux标准io的copy所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。