#include <stdio.h> /* FILE *fp; 【1】FILE *fopen(char *name, char *mode); 【2】// 流fp出现错误,返回非0值 int ferror(FILE *fp) 【3】// 到达文件末尾,返回非0值 int feof(FILE *fp) 【4】// 返回fp指向的输入流中的下一个字符,文件尾或错误返回EOF int getc(FILE *fp); 【5】// 将字符c写入到fp指向的文件中,并返回写入的字符。错误返回EOF int putc(int c, FILE *fp); 【6】 #define getchar() getc(stdin) #define putchar() putc((c), stdout) 【7】 int fscanf(FILE *fp, char *format, ...) int fprintf(FILE *fp, char *format, ...) 【8】 // 从fp中读取maxline - 1 个字符并以'\0'结尾保存到数组line中。 // 通常返回line遇文件结尾或发生错误返回NULL。 char *fgets(char *line, int maxline, FILE *fp) // 将一个字符串写入到一个文件中。 // 发生错误返回EOF,否则返回一个非负值。 char *fputs(char *line, FILE *fp) 【9】 // 与fgets和fputs类似,但其对stdin,stdout进行操作 gets在每行末尾删除'\n' puts在每行末尾添加'\n' char *gets(char *s); int puts(const char *s); */ /* cat函数的实现 */ int main(int argc, char *argv[]) { FILE *fp; void filecopy(FILE *, FILE *); if(argc == 1) /* 若没有命令行参数,则复制标准输入 */ filecopy(stdin,stdout); else while(--argc > 0) if((fp = fopen(*++argv, "r")) == NULL) { printf("cat:can't open %s\n", *argv); return 1; } else { filecopy(fp, stdout); fclose(fp); } return 0; } /* filecopy函数: 将文件ifp复制到文件ofp */ void filecopy(FILE *ifp, FILE *ofp) { int c; while((c = getc(ifp)) != EOF) putc(c, ofp); } |
|
来自: 海漩涡 > 《C_programming_language》