1 / 16
文档名称:

C语言程序设计课件16.ppt

格式:ppt   大小:61KB   页数:16页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

C语言程序设计课件16.ppt

上传人:mh900965 2018/1/3 文件大小:61 KB

下载得到文件列表

C语言程序设计课件16.ppt

相关文档

文档介绍

文档介绍:文件类型指针
(名为 FILE )的变量来存放文件信息(文件名、文件状态、文件当前位置等。
typedef struct
{int -fd; /* 文件号*/
int -cleft; /* 缓冲区中剩下的字符*/
int -mode; /* 文件操作模式*/
char * -nextc; /* 下一个字符位置*/
char * -buff; /* 文件缓冲区位置*/
}FILE;
因此,可以定义若干FILE类型的变量来存放文件信息。如:
FILE -efile [-MAXFILE]; /* 定义一个结构体数组*/
FILE *fp; /* 定义文件型指针变量*/
3. fputc 和 fgetc 函数使用举例
[例1]:将键盘输入的字符送到磁盘
#include ""
main()
{FILE *fp;
char ch,filename[10];
scanf("%s",filename);
if ((fp=fopen(filename,"w"))==NULL)
{printf("cannot open file\n");
exit(0);
}
ch=getchar();
while (ch!='#')
{fputc(ch,fp);
putchar(ch);
ch=getchar();
}
fclose(fp);
printf("\n");
}
从键盘输入一些字符,逐个将其送到磁盘上,直到输入一个“#”为止。
[例2]:文件内容复制
#include ""
main()
{FILE *in,*out;
char ch,infile[10],outfile[10];
printf("Enter the infile name:\n");
scanf("%s",infile);
printf("Enter the outfile name:\n");
scanf("%s",outfile);
if ((in=fopen(infile,"r"))==NULL)
{printf("cannot open infile\n"); exit(0); }
if ((out=fopen(outfile,"w"))==NULL)
{printf("cannot open outfile\n"); exit(0); }
while (!feof(in))
fputc(fgetc(in),out);
fclose(in);
fclose(out);
}
将一个磁盘文件中的信息复制到另一个磁盘文件中。
使用带参数的main函数进行文件内容复制
#include ""
main(argc,argv)
int argc;
char *argv[];
{FILE *in,*out;
char ch;
if (argc!=3)
{printf("You forgot to enter a filename\n"); exit(0); }
if((in=fopen(argv[1],"r"))==NULL)
{printf("cannot open infile\n"); exit(0); }
if((out=fopen(argv[2],"w"))==NULL)
{printf("cannot open outfile\n"); exit(0); }
while(!feof(in)) fputc(fgetc(in),out);
fclose(in);
fclose(out);
}
在输入命令行时把两个文件名一起输入。这时要用到main函数的参数。
fread 函数和 fwrite 函数
fread和fwrite函数用于读写一个数据块(如一个实数,一个结构体变量的值等)。一般调用形式为:
fread(buffer,size,count,fp);
fwrite(buffer,size,count,fp);
buffer:是一个指针,指向读入/输出数据的起始地址;
size:要读写的字节数;
count:要进行读写多少个size字节的数据项;
fp:文件型指针。
如:fread(f,4,2,fp);
表示从fp所指向的文件读入2次(每次4个字节)数据,存储到数组f中。
[例3]:键盘输入转存到磁盘文件
main()
{int i;
for (i=0;i<SIZE;i++)
scanf("%s%d%d%s",stud[i].name,&stud[i].num,
&stud[i].age,stud[i].addr);