FILE结构体也称为流(Stream)
流分为文本流和二进制流,两者区别为:文本流:换行符表示为为“\r\n” 二进制流:换行符表示为为“\n”。
全缓冲:当流的缓冲区无数据或者无空间时才执行实际I/O操作。
行缓冲:当输入输出遇到换行符时进行I/O操作。
无缓冲:数据直接写入文件,流不进行缓冲。
标准I/O预定了三个流,程序运行时自动打开 :
标准输入流 0 stdin
标准输出流 1 stdout
标准错误流 2 stderr
用fgetc()和fputc()实现文件拷贝(文件复制)。
#include <stdio.h>
int main(int argc,char* argv[]) //main函数传参,传入源文件和目标文件所在路径
{
FILE *fpsrc,*fpdst; //指向两个文件的指针
char ch;
if(argc<3)
{
perror("few arguments.");
return -1;
}
if((fpsrc=fopen(argv[1],"r"))==NULL)
{
perror("fopen fpsrc failed."); //用fopen()打开文件函数参数中包含路径名和打开方式 “r”为只读方式 “w”为只写方式
return -1;
}
if((fpdst=fopen(argv[2],"w"))==NULL)
{
perror("fopen fpdst failed.");
return -1;
}
while((ch = fgetc(fpsrc))!=EOF) //EOF为文件结束标志
{
fputc(ch,fpdst);
}
fclose(fpsrc); //fclose()用于关闭流
fclose(fpdst);
return 0;
}