Chinaunix首页 | 论坛 | 博客
  • 博客访问: 61244
  • 博文数量: 32
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 325
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-28 21:50
文章分类

全部博文(32)

文章存档

2011年(1)

2010年(6)

2009年(25)

我的朋友

分类: C/C++

2009-11-02 21:28:34

1。fputc        Write character to stream将一个字符写到文件上
int fputc ( int character, FILE * stream );
成功返回character,失败返回EOF(-1)
在stdio.h中
#define putchar(c)   fputc(c,stdout)
#define getchar(c)   fgetc(c,stdin)
#define putc(ch,fp)  fputc(ch,fp)
#define getc(fp)       fgetc(fp)

2。fgetc      
Get character from stream从指定文件读入字符
int fgetc ( FILE * stream );
如果在执行时读字符遇到文件结束符或者a reading error happens,返回EOF(-1),并且返回出错信息,
可用 or to determine whether an error happened or the End-Of-File was reached.


如果想在一个磁盘文件顺序读入字符并在屏幕上显示出来,可以:

ch = fgetc(fp);
while ( ch != EOF )
 { putchar(ch);
   ch = fgetc(fp);
}

但上面代码只适合应用于文本文件,对于二进制文件数据的值可能是-1,这就会导致被错误处理,
应使用feof函数来判断文件是否真的结束,如果文件结束,feof的值为1,否则为0。


while(!feof(fp))
 { c=fgetc(fp);
   .
 }


fputc与fgetc举例
将一个磁盘文件中的信息复制到另一个磁盘文件

#include <stdio.h>
int 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],"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);

  return 0;
}


阅读(1460) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~