c primer plus13章练习

来源:互联网 发布:linux防御xorddos 编辑:程序博客网 时间:2024/05/29 09:30
#include <stdio.h>#include <stdlib.h>int main (void){FILE *fp;int ch;long count=0;char name[81];printf("请输入文件名:");gets(name);if((fp=fopen(name,"r"))==NULL){fprintf(stderr,"文件打不开\n");exit(EXIT_FAILURE);}while((ch=getc(fp))!=EOF){putc(ch,stdout);count++;}fclose(fp);printf("文件%s拥有%ld个字符\n",name,count);return 0;}
#include <stdio.h>#include <stdlib.h>int main (int argc,char *argv[]){FILE *source,*destination;char ch;if(argc<3){fprintf(stderr,"Usage:%s filename\n",argv[0]);exit(EXIT_FAILURE);}if((source=fopen(argv[1],"rb"))==NULL){fprintf(stderr,"I couldn't open the file.\n");exit(EXIT_FAILURE);}if((destination=fopen(argv[2],"wb"))==NULL){fprintf(stderr,"I couldn't create the file.\n");exit(EXIT_FAILURE);}while((ch=getc(source))!=EOF){putc(ch,destination);}if(fclose(source)!=0||fclose(destination)!=0)fprintf(stderr,"Error in closing files\n");return 0;}
#include <stdio.h>#include <stdlib.h>#include <ctype.h>int main (void){FILE *source,*destination;char ch;char s_name[81],d_name[81];puts("请输入源文件名和输出文件名\n");gets(s_name);gets(d_name);if((source=fopen(s_name,"rb"))==NULL){fprintf(stderr,"I couldn't open the file.\n");exit(EXIT_FAILURE);}if((destination=fopen(d_name,"wb"))==NULL){fprintf(stderr,"I couldn't create the file.\n");exit(EXIT_FAILURE);}while((ch=getc(source))!=EOF){ch=toupper(ch);putc(ch,destination);}if(fclose(source)!=0||fclose(destination)!=0)fprintf(stderr,"Error in closing files\n");return 0;}
<pre name="code" class="html">#include <stdio.h>#include <stdlib.h>int main (int argc,char *argv[]){FILE *fp;int i;char ch;if(argc<2){fprintf(stderr,"没有文件\n");exit(EXIT_FAILURE);}for(i=1;i<argc;i++){if((fp=fopen(argv[i],"r"))==NULL){printf(stderr,"打不开文件\n");exit(EXIT_FAILURE);}while((ch=getc(fp))!=EOF){putc(ch,stdout);}putchar('\n');if((fclose(fp))!=0){fprintf(stderr,"无法关闭文件\n");exit(EXIT_FAILURE);}}return 0;}
#include <stdio.h>#include <stdlib.h>#include <string.h>#define BUFSIZE 1024#define SLEN 81void append(FILE *source,FILE *dest);int main(int argc,char *argv[]){FILE *fa,*fs; //fa指向追加的目的文件,fs指向源文件int i;if((fa=fopen(argv[1],"a"))==NULL){fprintf(stderr,"can't open %s\n",argv[1]);exit(EXIT_FAILURE);}if(setvbuf(fa,NULL,_IOFBF,BUFSIZE)!=0){fputs("can't create output buffer\n",stderr);exit(EXIT_FAILURE);}for(i=2;i<argc;i++){if(strcmp(argv[i],argv[1])==0)fputs("can't append file to itself\n",stderr);else if((fs=fopen(argv[i],"r"))==NULL)fprintf(stderr,"can't open %s\n",argv[i]);else{if(setvbuf(fs,NULL,_IOFBF,BUFSIZE)!=0){fputs("can't create input buffer\n",stderr);continue;}append(fs,fa);if(ferror(fs)!=0)fprintf(stderr,"Error in reading file %s.\n",argv[i]);if(ferror(fa)!=0)fprintf(stderr,"Error in writing file %s.\n",argv[1]);}fclose(fs);fclose(fa);}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 <string.h>#include <stdlib.h>#define LEN 40int main (void){FILE *in,*out;int ch;char name[LEN];int count=0;puts("请输入您希望压缩的文件名\n");gets(name);if((in=fopen(name,"r"))==NULL){fprintf(stderr,"找不到文件\n");exit(1);}strcat(name,".red");if((out=fopen(name,"w"))==NULL){fprintf(stderr,"无法创建文件\n");exit(2);}while((ch=getc(in))!=EOF)if(count++%3==0)putc(ch,out);if(fclose(in)!=0||fclose(out)!=0)fprintf(stderr,"无法关闭文件\n");return 0;}
#include <stdio.h>#include <stdlib.h>#define MAX 40int main (void){FILE *fp1,*fp2;char words1[100],words2[100];char name1[MAX];char name2[MAX];puts("请输入第一个文件名\n");gets(name1);puts("请输入第二个文件名\n");gets(name2);if((fp1=fopen(name1,"r"))==NULL){fprintf(stderr,"打不开文件%s",name1);exit(1);}if((fp2=fopen(name2,"r"))==NULL){fprintf(stderr,"打不开文件%s",name2);exit(2);}while(1){if(fgets(words1,100,fp1)!=NULL&&words1[0]!='\0'){fprintf(stdout,"%s",words1);}if(fgets(words2,100,fp2)!=NULL&&words2[0]!='\0')fprintf(stdout,"%s",words2);if(words1[0]=='\0'&&words2[0]=='\0')exit(0);}return 0;}
#include <stdio.h>#include <stdlib.h>#define MAX 40int main (void){FILE *fp1,*fp2;char ch1,ch2;char name1[MAX];char name2[MAX];puts("请输入第一个文件名\n");gets(name1);puts("请输入第二个文件名\n");gets(name2);if((fp1=fopen(name1,"r"))==NULL){fprintf(stderr,"打不开文件%s",name1);exit(1);}if((fp2=fopen(name2,"r"))==NULL){fprintf(stderr,"打不开文件%s",name2);exit(2);}ch1=getc(fp1);ch2=getc(fp2);while(ch1!=EOF||ch2!=EOF){while(ch1!=EOF&&ch1!='\n'){fprintf(stdout,"%c",ch1);ch1=getc(fp1);}if(ch1!=EOF){if(ch2==EOF)putchar('\n');elseputchar(' ');ch1=getc(fp1);}while(ch2!=EOF&&ch2!='\n'){fprintf(stdout,"%c",ch2);ch2=getc(fp2);}if(ch2!=EOF){putchar('\n');ch2=getc(fp2);}}return 0;}
#include <stdio.h>#include <stdlib.h>int main (int argc,char *argv[]){char ch; FILE *fp;int i;int count[30]={0};if(argc==1){fprintf(stderr,"Usage:%s filename\n",argv[0]);exit(1);}else if(argc==2){fp=stdin;while((ch=getc(fp))!=EOF){if(ch==*argv[1])count[0]++;}printf("stdin %d",count[0]);}elsefor(i=2;i<argc;i++){if((fp=fopen(argv[i],"r"))==NULL){fprintf(stderr,"I couldn't open the file %s\n",argv[i]);continue;}while((ch=getc(fp))!=EOF){if(ch==*argv[1])count[i]++;}printf("%s %d",argv[i],count[i]);}fclose(fp);return 0;}
<pre name="code" class="html">#include <stdio.h>#include <stdlib.h>#define MAX 40int main (void){FILE *fp;char words[MAX];int count=0;if((fp=fopen("words","a+"))==NULL){fprintf(stdout,"Can't open\"words\"file.\n");exit(1);}rewind(fp);while(fgets(words,MAX-1,fp)!=NULL)count++;rewind(fp);puts("enter words to add to the file;press the enter");puts("key at the beginning of a line to terminate.");while(gets(words)!=NULL&&words[0]!='\0'){count++;fprintf(fp,"%d%s\n",count,words);}puts("file contents:");rewind(fp);while(fgets(words,MAX-1,fp)!=NULL)fputs(words,stdout);if(fclose(fp)!=0)fprintf(stderr,"Error closing file\n");return 0;}


#include <stdio.h>#include <stdlib.h>#include <ctype.h>#define LEN 30int main (void){char name[LEN];FILE *fp;char ch;puts("请输入文件名,非数字退出\n");gets(name);while(1){if((fp=fopen(name,"r"))==NULL){fprintf(stderr,"couldn't open the file.\n");continue;}while((ch=getc(fp))!=EOF&&ch!='\n'){putchar(ch);}fclose(fp);ch=getchar();getchar();if(!isdigit(ch))break;puts("请输入文件名\n");gets(name);}return 0;}
<pre name="code" class="html">#include <stdio.h>#include <ctype.h>#include <stdlib.h>#define LEN 100int main (int argc,char *argv[]){FILE *fp;char str[81];if(argc<3){fprintf(stderr,"usage: %s filename.\n",argv[0]);exit(1);}if((fp=fopen(argv[2],"r"))==NULL){fprintf(stderr,"I couldn't open the file\n");exit(1);}while(fgets(str,LEN,fp)!=NULL){if(strstr(str,argv[1])!=NULL){puts(str);}}fclose(fp);return 0;}
<pre name="code" class="html">#include <stdio.h>#include <stdlib.h>#define ROWS 20#define COLS 30int main (void){int in[ROWS][COLS];char name[81];int row,col;FILE *fp;puts("请输入文件名");gets(name);if((fp=fopen(name,"r"))==NULL){fprintf(stderr,"无法打开文件\n");exit(1);}for(row=0;row<ROWS;row++)for(col=0;col<COLS;col++)fscanf(fp,"%d",&in[row][col]);for(row=0;row<ROWS;row++){for(col=0;col<COLS;col++){if(in[row][col]==0)putchar(' ');if(in[row][col]==1)putchar('.');if(in[row][col]==2)putchar(',');if(in[row][col]==3)putchar(':');if(in[row][col]==4)putchar('~');if(in[row][col]==5)putchar('!');if(in[row][col]==6)putchar('*');if(in[row][col]==7)putchar('=');if(in[row][col]==8)putchar('&');if(in[row][col]==9)putchar('#');}putchar('\n');}return 0;}
#include <stdio.h>#include <stdlib.h>#include <math.h>#define ROWS 20#define COLS 30int main (void){int in[ROWS][COLS];char name[81];int row,col;FILE *fp;puts("请输入文件名");gets(name);if((fp=fopen(name,"r"))==NULL){fprintf(stderr,"无法打开文件\n");exit(1);}for(row=0;row<ROWS;row++)for(col=0;col<COLS;col++)fscanf(fp,"%d",&in[row][col]);for(row=0;row<ROWS;row++)for(col=0;col<COLS;col++){//四个角if(row==0&&col==0){if(abs(in[row][col]-in[row+1][col])>1&&abs(in[row][col]-in[row][col+1])>1){in[row][col]=(int)((in[row+1][col]+in[row][col+1])/2+0.5);}}else if(row==0&&col==29){if(abs(in[row][col]-in[row][col-1])>1&&abs(in[row][col]-in[row+1][col])>1){in[row][col]=(int)((in[row][col-1]+in[row+1][col])/2+0.5);}}else if(row==19&&col==0){if(abs(in[row][col]-in[row-1][col])>1&&abs(in[row][col]-in[row][col+1])>1){in[row][col]=(int)((in[row-1][col]+in[row][col+1])/2+0.5);}}else if(row==19&&col==29){if(abs(in[row][col]-in[row-1][col])>1&&abs(in[row][col]-in[row][col-1])>1){in[row][col]=(int)((in[row-1][col]+in[row][col-1])/2+0.5);}}//四条边else if(row==0){if(abs(in[row][col]-in[row][col-1])>1&&abs(in[row][col]-in[row][col+1])>1&&abs(in[row][col]-in[row+1][col])>1){in[row][col]=(int)((in[row][col-1]+in[row][col+1]+in[row+1][col])/3+0.5);}}else if(row==19){if(abs(in[row][col]-in[row][col-1])>1&&abs(in[row][col]-in[row][col+1])>1&&abs(in[row][col]-in[row-1][col])>1){in[row][col]=(int)((in[row][col-1]+in[row][col+1]+in[row-1][col])/3+0.5);}}else if(col==0){if(abs(in[row][col]-in[row+1][col])>1&&abs(in[row][col]-in[row-1][col])>1&&abs(in[row][col]-in[row][col+1])>1){in[row][col]=(int)((in[row+1][col]+in[row-1][col]+in[row][col+1])/3+0.5);}}else if(col==0){if(abs(in[row][col]-in[row+1][col])>1&&abs(in[row][col]-in[row-1][col])>1&&abs(in[row][col]-in[row][col-1])>1){in[row][col]=(int)((in[row+1][col]+in[row-1][col]+in[row][col-1])/3+0.5);}}//正常情况下else{if(abs(in[row][col]-in[row+1][col])>1&&abs(in[row][col]-in[row-1][col])>1&&abs(in[row][col]-in[row][col-1])>1&&abs(in[row][col]-in[row][col+1])>1){in[row][col]=(int)((in[row+1][col]+in[row-1][col]+in[row][col-1]+in[row][col+1])/4+0.5);}}}for(row=0;row<ROWS;row++){for(col=0;col<COLS;col++){if(in[row][col]==0)putchar(' ');if(in[row][col]==1)putchar('.');if(in[row][col]==2)putchar(',');if(in[row][col]==3)putchar(':');if(in[row][col]==4)putchar('~');if(in[row][col]==5)putchar('!');if(in[row][col]==6)putchar('*');if(in[row][col]==7)putchar('=');if(in[row][col]==8)putchar('&');if(in[row][col]==9)putchar('#');}putchar('\n');}return 0;}




0 0
原创粉丝点击