文件IO编程九

来源:互联网 发布:蓝硕移动硬盘mac 编辑:程序博客网 时间:2024/05/16 02:45

(1) fgetc/getc/getchar 详解

函数:int fgetc(FILE *stream);

说明:fgetc()从参数stream所指的文件中读取一个字符,若读到文件尾而无数据时则返回EOF。正常情况下是返回该值

函数:int getc(FILE *stream);

说明:与fgetc()的区别就是fgetc()是函数调用,而getc()是宏,它会相对比较快速。但是普通的程序比较短,没什么区别

函数:getchar()

说明:它规定是从键盘输入

共同点:它都是输入一个字符,一般是用于读取文本文件,而不作用于二进制文件。


(2)fputc/putc/putchar 详解

函数:int fputc(int c, FILE *stream);

说明:fputc()会将参数c转为unsigned char后再写入参数stream所指的文件,它会返回成功写入的字符(参数c),若返回EOF则代表写入失败。与fgetc()对应。

其余两个函数亦如此,和上面的函数对应。


(3) feof/ferror 详解

函数:int feof(FILE *stream);

说明:feof()用来侦测是否读到了文件尾,尾数stream为fopen()所返回的文件指针。如果已到文件尾则返回非零值,其他情况返回0。


程序:

int main(int argc, char const **argv[])

{

if(argc != 3)

{

printf("Usage: %s <src> <dst>\n", argv[0]);

exit(1);

}

FILE *fp_src = fopen(argv[1], "r");

if(fp_src == NULL)

{

fprintf(stderr, "fopen(%s) failed: %s\n", argv[1], strerror(errno));

exit(1);

}

FILE *fp_dst = fopen(argv[2], "w");

if(fp_dst == NULL)

{

fprintf(stderr, "fopen(%s) failed: %s\n", argv[2], strerror(errno));

exit(1);

}

int c;

while(1)

{

c = fgetc(fp_src);

if(c == EOF)

{

if(feof(fp_src)) //达到文件尾

break;

if(ferror(fp_src))  //遇到错误

{

perror("fgetc() failed");

break;

}

}

fputc(c, fp_dst);

}

return 0;

}


0 0