user-0 提问: 文件加密

回复:
user: user-1
content: st1[strlen(st1)]='\n'; 这句有问题吧, 字符串以0结尾,搞个回车做什么

user: user-0
content: 引用 7 楼 fefe82 的回复:[quote=引用 6 楼 zzl_zZ 的回复:] [quote=引用 5 楼 fefe82 的回复:] [quote=引用 3 楼 zzl_zZ 的回复:] [quote=引用 1 楼 user-3 的回复:]  1）  FILE *f1=fopen("d://a.txt","w"); fputs(st1,f1); rewind(f1); 文件没关闭，也没 flush 文件大小不确定。只怕是 0 ，  2）while(feof(f1)){S;}  文件结束执行循环，而且是一直在循环， 要不执行循环体，要么死循环。 #include<stdio.h> #include<stdlib.h> #include<string.h> #define SIZE 1024 int main(void) {     FILE *f1=fopen("d://a.txt","w");     char st1[SIZE]={0};     while(gets(st1)!=NULL&&st1[0]!='\0')     {         if(strcmp(st1,"exit")==0)             break;         st1[strlen(st1)-1]='\n';         fputs(st1,f1);         memset(st1,0,sizeof(st1));      }     fclose(f1);          FILE *f2=fopen("d://a.txt","r");     rewind(f2);          while(!feof(f2))     {     	     }          fclose(f2);     return 0; } 我这样也不行，输入exit没反应了，可是把第二个while(!feof(f2))删了就好了， 这是什么原因啊。。。。[/quote]  第二个while(!feof(f2)) : 这不是个死循环嘛 ...[/quote]  怎么死循环了。。。。求解释啊[/quote]  你想一下什么时候循环会推出就好了。  =============  循环体里没有操作，你循环多少次 feof(f2) 的返回值都不会发生变化的。[/quote]  谢谢

user: user-2
content: 引用 6 楼 zzl_zZ 的回复:[quote=引用 5 楼 fefe82 的回复:] [quote=引用 3 楼 zzl_zZ 的回复:] [quote=引用 1 楼 user-3 的回复:]  1）  FILE *f1=fopen("d://a.txt","w"); fputs(st1,f1); rewind(f1); 文件没关闭，也没 flush 文件大小不确定。只怕是 0 ，  2）while(feof(f1)){S;}  文件结束执行循环，而且是一直在循环， 要不执行循环体，要么死循环。 #include<stdio.h> #include<stdlib.h> #include<string.h> #define SIZE 1024 int main(void) {     FILE *f1=fopen("d://a.txt","w");     char st1[SIZE]={0};     while(gets(st1)!=NULL&&st1[0]!='\0')     {         if(strcmp(st1,"exit")==0)             break;         st1[strlen(st1)-1]='\n';         fputs(st1,f1);         memset(st1,0,sizeof(st1));      }     fclose(f1);          FILE *f2=fopen("d://a.txt","r");     rewind(f2);          while(!feof(f2))     {     	     }          fclose(f2);     return 0; } 我这样也不行，输入exit没反应了，可是把第二个while(!feof(f2))删了就好了， 这是什么原因啊。。。。[/quote]  第二个while(!feof(f2)) : 这不是个死循环嘛 ...[/quote]  怎么死循环了。。。。求解释啊[/quote]  你想一下什么时候循环会推出就好了。  =============  循环体里没有操作，你循环多少次 feof(f2) 的返回值都不会发生变化的。

user: user-0
content: 引用 5 楼 fefe82 的回复:[quote=引用 3 楼 zzl_zZ 的回复:] [quote=引用 1 楼 user-3 的回复:]  1）  FILE *f1=fopen("d://a.txt","w"); fputs(st1,f1); rewind(f1); 文件没关闭，也没 flush 文件大小不确定。只怕是 0 ，  2）while(feof(f1)){S;}  文件结束执行循环，而且是一直在循环， 要不执行循环体，要么死循环。 #include<stdio.h> #include<stdlib.h> #include<string.h> #define SIZE 1024 int main(void) {     FILE *f1=fopen("d://a.txt","w");     char st1[SIZE]={0};     while(gets(st1)!=NULL&&st1[0]!='\0')     {         if(strcmp(st1,"exit")==0)             break;         st1[strlen(st1)-1]='\n';         fputs(st1,f1);         memset(st1,0,sizeof(st1));      }     fclose(f1);          FILE *f2=fopen("d://a.txt","r");     rewind(f2);          while(!feof(f2))     {     	     }          fclose(f2);     return 0; } 我这样也不行，输入exit没反应了，可是把第二个while(!feof(f2))删了就好了， 这是什么原因啊。。。。[/quote]  第二个while(!feof(f2)) : 这不是个死循环嘛 ...[/quote]  怎么死循环了。。。。求解释啊

user: user-2
content: 引用 楼主 zzl_zZ 的回复:#include<stdio.h> #include<stdlib.h> #include<string.h> #define SIZE 1024 void code(char *s) {     while(*s)     {         (*s)++;         s++;     } } int main(void) {     FILE *f1=fopen("d://a.txt","w");     FILE *f2=fopen("c://b.txt","w");     char st1[SIZE];     char st2[SIZE];     while(1)     {         gets(st1);         if(strcmp(st1,"exit")==0)             break;         st1[strlen(st1)]='\n';         fputs(st1,f1);     }     rewind(f1);     while(feof(f1))     {         memset(st2,0,sizeof(st2));         fgets(st2,sizeof(st2),f1);         code(st2);         fputs(st2,f2);     }     fclose(f1);     fclose(f2);     return 0; }    为什么生成b.txt里面是空的啊。。。。 实在不知道怎么回事。。。。  读文件要用 "r" 方式打开。

user: user-2
content: 引用 3 楼 zzl_zZ 的回复:[quote=引用 1 楼 user-3 的回复:]  1）  FILE *f1=fopen("d://a.txt","w"); fputs(st1,f1); rewind(f1); 文件没关闭，也没 flush 文件大小不确定。只怕是 0 ，  2）while(feof(f1)){S;}  文件结束执行循环，而且是一直在循环， 要不执行循环体，要么死循环。 #include<stdio.h> #include<stdlib.h> #include<string.h> #define SIZE 1024 int main(void) {     FILE *f1=fopen("d://a.txt","w");     char st1[SIZE]={0};     while(gets(st1)!=NULL&&st1[0]!='\0')     {         if(strcmp(st1,"exit")==0)             break;         st1[strlen(st1)-1]='\n';         fputs(st1,f1);         memset(st1,0,sizeof(st1));      }     fclose(f1);          FILE *f2=fopen("d://a.txt","r");     rewind(f2);          while(!feof(f2))     {     	     }          fclose(f2);     return 0; } 我这样也不行，输入exit没反应了，可是把第二个while(!feof(f2))删了就好了， 这是什么原因啊。。。。[/quote]  第二个while(!feof(f2)) : 这不是个死循环嘛 ...

user: user-0
content: 引用 1 楼 user-3 的回复:1）  FILE *f1=fopen("d://a.txt","w"); fputs(st1,f1); rewind(f1); 文件没关闭，也没 flush 文件大小不确定。只怕是 0 ，  2）while(feof(f1)){S;}  文件结束执行循环，而且是一直在循环， 要不执行循环体，要么死循环。 #include<stdio.h> #include<stdlib.h> #include<string.h> #define SIZE 1024 int main(void) {     FILE *f1=fopen("d://a.txt","w");     char st1[SIZE]={0};     while(gets(st1)!=NULL&&st1[0]!='\0')     {         if(strcmp(st1,"exit")==0)             break;         st1[strlen(st1)-1]='\n';         fputs(st1,f1);         memset(st1,0,sizeof(st1));      }     fclose(f1);          FILE *f2=fopen("d://a.txt","r");     rewind(f2);          while(!feof(f2))     {     	     }          fclose(f2);     return 0; } 我这样也不行，输入exit没反应了，可是把第二个while(!feof(f2))删了就好了， 这是什么原因啊。。。。

user: user-3
content: 1）  FILE *f1=fopen("d://a.txt","w"); fputs(st1,f1); rewind(f1); 文件没关闭，也没 flush 文件大小不确定。只怕是 0 ，  2）while(feof(f1)){S;}  文件结束执行循环，而且是一直在循环， 要不执行循环体，要么死循环。