文件加密,该如何处理

文件加密
#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里面是空的啊。。。。
实在不知道怎么回事。。。。
------解决思路----------------------
 1)
 FILE *f1=fopen("d://a.txt","w");
fputs(st1,f1);
rewind(f1);
文件没关闭,也没 flush 文件大小不确定。只怕是 0


2)while(feof(f1)){S;}
 文件结束执行循环,而且是一直在循环,
要不执行循环体,要么死循环。

------解决思路----------------------
st1[strlen(st1)]='\n'; 这句有问题吧, 字符串以0结尾,搞个回车做什么
------解决思路----------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

 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))删了就好了,
这是什么原因啊。。。。


第二个while(!feof(f2)) : 这不是个死循环嘛 ...


怎么死循环了。。。。求解释啊文件加密,该如何处理


你想一下什么时候循环会推出就好了。

=============

循环体里没有操作,你循环多少次 feof(f2) 的返回值都不会发生变化的。