#include <stdio.h> #include <stdlib.h> #include <console.h> /* Macintosh adjustment */ int main(int argc, char *argv[]) { int ch1, ch2; FILE * f1; FILE * f2; argc = ccommand(&argv); /* Macintosh adjustment */ if (argc != 3) { printf("Usage: %s file1 file2/n", argv[0]); exit(EXIT_FAILURE); } if ((f1 = fopen(argv[1], "r")) == NULL) { printf("Could not open file %s for input/n", argv[1]); exit(EXIT_FAILURE); } if ((f2 = fopen(argv[2], "r")) == NULL) { printf("Could not open file %s for input/n", argv[2]); exit(EXIT_FAILURE); } ch1 = getc(f1); ch2 = getc(f2); while (ch1 != EOF || ch2 != EOF) { while (ch1 != EOF && ch1 != '/n') /* skipped after EOF reached */ { putchar(ch1); ch1 = getc(f1); } if (ch1 != EOF) { if (ch2 == EOF) putchar('/n'); else putchar(' '); ch1 = getc(f1); } while (ch2 != EOF && ch2 != '/n') /* skipped after EOF reached */ { putchar(ch2); ch2 = getc(f2); } if (ch2 != EOF) { putchar('/n'); ch2 = getc(f2); } } if (fclose(f1) != 0) printf("Could not close file %s/n", argv[1]); if (fclose(f2) != 0) printf("Could not close file %s/n", argv[2]); return 0; } //使用标准I/O #include<stdio.h> #include<stdlib.h> int main(void) { int ch; char fname[20]; long count=0; FILE *fp; puts("请输入文件名:"); gets(fname); fp=stdin; if((fp=fopen(fname,"r"))==NULL) { fprintf(stderr,"Can't open %s /n",fname); exit(1); } else { while((ch=getc(fp))!=EOF) { putc(ch,stdout); count++; } } fclose(fp); printf("File %s has %ld characters/n",fname,count); return 0; } //文件复制程序,从命令行接受参数 #include<stdio.h> #include<stdlib.h> #include<string.h> #define BUFSIZE 1024 int main(int argc,int *argv[]) { int byte; FILE *fs; FILE *fa; if(argc!=3) { printf("Usage: %s filename",argv[0]); } if((fs=fopen(argv[1],"rb"))==NULL) { fprintf(stderr,"Can't open %s",argv[1]); exit(EXIT_FAILURE); } if((fa=fopen(argv[2],"wb"))==NULL) { printf("Could not open file %s for output/n", argv[2]); exit(EXIT_FAILURE); } while((byte=getc(fs))!=EOF) { putc(byte, fa); } if(ferror(fs)!=0) { fprintf(stderr,"Error in reading file %s./n",argv[1]); } if(ferror(fa)!=0) { fprintf(stderr,"Error in reading file %s./n",argv[2]); } fclose(fs); printf("File %s appended,/n",argv[1]); fclose(fa); return 0; } #include<stdio.h> #include<stdlib.h> #include<ctype.h> #define SIZE 31 int main(void) { FILE *fs;//指向源文件的指针 FILE *fd;//指向目标文件的指针 char sfile[SIZE];//源文件名 char dfile[SIZE];//目标文件名 char ch; puts("请输入要复制的源文件名:"); gets(sfile); if((fs=fopen(sfile,"r"))==NULL) { fprintf(stderr,"Can't open %s/n",sfile); exit(EXIT_FAILURE); } puts("请输入目标文件名:"); gets(dfile); if((fd=fopen(dfile,"w"))==NULL) { fprintf(stderr,"Can't open %s/n",dfile); exit(EXIT_FAILURE); } while((ch=getc(fs))!=EOF) { putc(toupper(ch),fd); } fclose(fs); fclose(fd); return 0; } //在屏幕上依次显示命令行列出的所有文件 #include<stdio.h> #include<stdlib.h> int main(int argc,char *argv[]) { FILE *fp; int i; char ch; if(argc<2) { fprintf(stderr,"Usage:%s filename/n",argv[0]); exit(1); } for(i=1;i<argc;i++) { printf("/n%s 的内容为:/n",argv[i]); if((fp=fopen(argv[i],"r"))==NULL) { fprintf(stderr,"Can't open %s /n",argv[i]); exit(EXIT_FAILURE); } while((ch=getc(fp))!=EOF) { putc(ch,stdout); } fclose(fp); } return 0; } //把多个文件的内容追加到一个文件中 #include<stdio.h> #include<string.h> #include<stdlib.h> #define BUFSIZE 1024 #define SLEN 81 void append(FILE *source,FILE *dest); int main(int argc,char *argv[]) { FILE *fa,*fs;//fa指向被追加的目标文件,fs指向源文件 int i,file=0; if(argc<3) { fprintf(stderr,"Usage %s filename/n",argv[0]); exit(1); } for(i=2;i<argc;i++) { if((fa=fopen(argv[1],"a"))==NULL) { fprintf(stderr,"Can't open %s",argv[1]); exit(EXIT_FAILURE); } if(setvbuf(fa,NULL,_IOFBF,BUFSIZE)!=0) { fputs("Can't create output buffer/n",stderr); exit(2); } if((fs=fopen(argv[i],"r"))==NULL) { fprintf(stderr,"Can't open %s",argv[i]); } if(strcmp(argv[1],argv[i])==0) { fputs("Can't append file to itself/n",stderr); } else { if(setvbuf(fs,NULL,_IOFBF,BUFSIZE)!=0) { fputs("Can't create intput buffer/n",stderr); continue; } } append(fs,fa); if(ferror(fa)!=0) { fprintf(stderr,"Error in reading file %s/n",argv[1]); } if(ferror(fs)!=0) { fprintf(stderr,"Error in writing file %s/n",argv[i]); } fclose(fs); file++; printf(" %s files appended./n",argv[i]); fclose(fa); } printf("Done.%d files appended./n",file); return 0; } void append(FILE *source,FILE *dest) { size_t bytes; static char temp[BUFSIZE]; while((bytes=fread(temp,sizeof(char),BUFSIZE,source))>0) { fwrite(temp,sizeof(char),bytes,dest); } } //把文件压缩为原来的三分之一 #include<stdio.h> #include<stdlib.h> #include<string.h> #define LEN 40 int main(void) { FILE *in,*out; int ch; char name[LEN]; char file[LEN]; int count=0; puts("输入文件名: "); gets(file); if((in=fopen(file,"r"))==NULL) { fprintf(stderr,"Can't open %s/n",file); exit(1); } strcpy(name,file); strcat(name,".red"); if((out=fopen(name,"w"))==NULL) { fprintf(stderr,"Can't create outfile/n"); exit(3); } while((ch=getc(in))!=EOF) { if(count++%3==0) { putc(ch,out); } } if(fclose(in)!=0||fclose(out)!=0) { fprintf(stderr,"Error in closeing file/n"); } return 0; } //打开两个文件的程序a,使用命令行参数获得文件名 #include<stdio.h> #include<stdlib.h> int main(int argc,char *argv[]) { FILE *fp1,*fp2; char ch1; char ch2; if(argc!=3) { fprintf(stderr,"Usage: %s filename./n",argv[0]); exit(1); } if((fp1=fopen(argv[1],"r"))==NULL) { fprintf(stderr,"Can't open %s/n",argv[1]); exit(EXIT_FAILURE); } if((fp2=fopen(argv[2],"r"))==NULL) { fprintf(stderr,"Can't open %s/n",argv[2]); exit(2); } ch1 = getc(fp1); ch2 = getc(fp2); while (ch1 != EOF || ch2 != EOF) { while (ch1 != EOF && ch1 != '/n') { putchar(ch1); ch1 = getc(fp1); } if (ch1 != EOF) { putchar('/n'); ch1 = getc(fp1); } while (ch2 != EOF && ch2 != '/n') { putchar(ch2); ch2 = getc(fp2); } if (ch2 != EOF) { putchar('/n'); ch2 = getc(fp2); } } if (fclose(fp1) != 0) printf("Could not close file %s/n", argv[1]); if (fclose(fp2) != 0) printf("Could not close file %s/n", argv[2]); return 0; } #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int ch1, ch2; FILE * f1; FILE * f2; if (argc != 3) { printf("Usage: %s file1 file2/n", argv[0]); exit(EXIT_FAILURE); } if ((f1 = fopen(argv[1], "r")) == NULL) { printf("Could not open file %s for input/n", argv[1]); exit(EXIT_FAILURE); } if ((f2 = fopen(argv[2], "r")) == NULL) { printf("Could not open file %s for input/n", argv[2]); exit(EXIT_FAILURE); } ch1 = getc(f1); ch2 = getc(f2); while (ch1 != EOF || ch2 != EOF) { while (ch1 != EOF && ch1 != '/n') { putchar(ch1); ch1 = getc(f1); } if (ch1 != EOF) { if (ch2 == EOF) putchar('/n'); else putchar(' '); ch1 = getc(f1); } while (ch2 != EOF && ch2 != '/n') { putchar(ch2); ch2 = getc(f2); } if (ch2 != EOF) { putchar('/n'); ch2 = getc(f2); } } if (fclose(f1) != 0) printf("Could not close file %s/n", argv[1]); if (fclose(f2) != 0) printf("Could not close file %s/n", argv[2]); return 0; }