文件的读写 一
一、字符输入输出函数(fputs() 和 fgets())
fputs 函数
函数调用:
fputs ( ch , fp ) ;
函数功能:
将字符(ch 的值)输出到 fp 所指向的文件中去。
返回值:
如果输出成功,则返回值就是输出的字符;
如果输出失败,则返回一个EOF 。
fgets 函数
函数调用:
ch = fgets ( fp );
函数功能:
从指定的文件读入一个字符, 该文件必须是以读或 读写方式打开的。
返回值:
读取成功一个字符,赋给ch。 如果遇到文件结束符,返回一个文件结束标志 EOF 。
常见的读取字符操作
从一个文本文件顺序读入字符并在屏幕上显示出来:
ch = fgetc ( fp );
while ( ch ! =EOF )
{
putchar ( ch );
ch = fgetc ( fp );
}
注意:EOF 不是可输出字符,因此不能在屏幕上显示。
由于字符的ASCII 码不可能出现-1,因此 EOF 定义为 -1是合适的。当读入的字符值等于-1时,表示读入 的已不是正常的字符而是文件结束符。
常见的读取字符操作
从一个二进制文件顺序读入字符:
while (! feof ( fp ))
{
ch = fgetc ( fp );
}
注意:ANSI C 提供一个 feof ()函数来判断文件是否真的结束。如果是文件结束,函数 feof ( fp )的值为1 (真);否则为0(假)。以上也适用于文本文件的读取。
#include <stdlib.h>
#include <stdio.h>
void main(void)
{ FILE *fp;
char ch,filename[10];
scanf("%s",filename);
if((fp=fopen(filename,"w"))==NULL) {
printf("cannot open file\n");
exit(0); /* 终止程序 */}
ch=getchar( ); /* 接收执行 scanf 语句时最后输入的回车符 */
ch=getchar( ); /* 接收输入的第一个字符 */
while(ch!='#'{
fputc(ch,fp);putchar(ch);
ch=getchar(); }
fclose(fp);
}
运行情况如下:
file1.c (输入磁盘文件名)
computer and c#(输入一个字符串)
computer and c (输出一个字符串)
#include <stdlib.h>
#include <stdio.h>
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);}
运行情况如下:
Enter the infile name
file1.c(输入原有磁盘文件名
Enter the outfile n ame:
file2.c (输入新复制的磁盘文件名)
程序运行结果是将file1.c文件中的内容复制到 file2.c中去。
运行方法:#include <stdlib.h>
#include <stdio.h>
main(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],"rb"))==NULL)
{ printf("cannot open infile\n");
exit(0);}
if((out=fopen(argv[2],"wb"))==NULL)
{ printf("cannot open outfile\n");
exit(0);}
while(!feof(in)) fputc(fgetc(in),out);
fclose(in);
fclose(out);}
设经编译连接后得到的可执行文件名为a.exe ,则在 DOS 命令工 作方式下,可以输入以下的命令行:
C>a file1.c file2.c
file1.c和file2.c,分别输入到argv[1] 和argv[2]中,argv[0]的内容为 a ,argc的
值等于3 。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69914734/viewspace-2655115/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/69914734/viewspace-2655115/