c语言问题,我写了一个加密与解密的程序(文件移位),不知道哪里错了,求大神帮忙看看

#include<stdio.h>#include<stdlib.h>voidmain(){FILE*fp;charx,f[80];inty,n,key;printf("... #include<stdio.h>#include<stdlib.h>void main(){ FILE *fp; char x,f[80]; int y,n,key; printf("\n****************************"); printf("\n* 文件移位加密与解密 *"); printf("\n* 软件工程 2013 *"); printf("\n* 何博 201310804008 *"); printf("\n****************************"); printf("\n请输入文件名:"); while(1) { scanf("%s",f); if((fp=fopen(f,"r"))==NULL) { printf("\n无法打开该文件,请重新输入:"); } else { printf("请输入密码:"); scanf("%d",&key); key=key%26; printf("\n加密请输入1,解密请输入2:"); scanf("%d",n); printf("\n"); if(n==1) { while((x=fgetc(fp))!=EOF) { if(x>='A'&&x<='Z') { x=x+(char)key; if(x>'Z') x=x-26; } if(x>='a'&&x<='z') { y=(int)x+key; if(y>122) { x=(char)(y-26); } else x=(char)y; } printf("%c",x); } n=0; fclose(fp); printf("\n"); } else if(n==2) { while((x=fgetc(fp))!=EOF) { if(x>='a'&&x<='z') { x=x-key; if(x<'a') x=x+26; } if(x>='A'&&x<='Z') { x=x-key; if(x<'A') x=x+26; } printf("%c",x); } n=0; fclose(fp); printf("\n"); } printf("\n********感谢您的使用********"); } }} 展开
 我来答
woailuo帅
推荐于2016-09-06 · TA获得超过823个赞
知道小有建树答主
回答量:1354
采纳率:40%
帮助的人:594万
展开全部
乍一眼看上去么啥问题啊,你是功能出问题了,还是报错了?还是无法运行什么的?
#include<stdio.h>
#include<stdlib.h>
void main(){  
  FILE *fp; 
  char x,f[80]; 
  int  y,n,key; 
  printf("\n****************************"); 
  printf("\n*    文件移位加密与解密    *"); 
  printf("\n*      软件工程  2013      *"); 
  printf("\n*    何博  201310804008    *"); 
  printf("\n****************************"); 
  printf("\n请输入文件名:"); 
  while(1) {  
    scanf("%s",f);  
    if((fp=fopen(f,"r"))==NULL)  {   
      printf("\n无法打开该文件,请重新输入:");  
    }  
    else  {   
      printf("请输入密码:");   
      scanf("%d",&key);   
      key=key%26;  
      printf("\n加密请输入1,解密请输入2:");   
      scanf("%d",n);   
      printf("\n");   
      if(n==1)   {    
        while((x=fgetc(fp))!=EOF)    {
          if(x>='A'&&x<='Z')     {  
            x=x+(char)key;
            if(x>'Z') x=x-26;     
          } 
          if(x>='a'&&x<='z') {      
            y=(int)x+key;      
            if(y>122)      {       
              x=(char)(y-26);      
            }      
            else x=(char)y;     
          }     
          printf("%c",x);    
        }    
        n=0;    
        fclose(fp);    
        printf("\n");   
      }   
      else if(n==2)   {    
        while((x=fgetc(fp))!=EOF)    {     
          if(x>='a'&&x<='z')     {      
            x=x-key;      
            if(x<'a')       
            x=x+26;     
          }     
          if(x>='A'&&x<='Z')     {      
            x=x-key;      
            if(x<'A')       
            x=x+26;     
          }     
          printf("%c",x);    
        }    
        n=0;    
        fclose(fp);    
        printf("\n");   
      }   
      printf("\n********感谢您的使用********");  
    } 
  }
}

//先给你调整下格式再慢慢看
tianyuwuse
2014-01-08 · TA获得超过1117个赞
知道小有建树答主
回答量:494
采纳率:100%
帮助的人:239万
展开全部
其他地方没问题,就是这一个地方
scanf("%d",n);
scanf("%d",&n);
应该是你疏忽漏掉了。
再就是你的这个程序怎么没有把加密后的文件存到磁盘上而仅仅是输出到屏幕上啊?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
C语言爱好者123
2014-01-09
知道答主
回答量:50
采纳率:0%
帮助的人:9.2万
展开全部
我有 需要用现有超级计算机破解到下个世纪都不破解不出 的加密方法
因为世上没有什么是破解不了的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
淡功红0k
2014-01-08 · TA获得超过8856个赞
知道大有可为答主
回答量:1.5万
采纳率:29%
帮助的人:2440万
展开全部
这可以是一个
#包括中

无效代码(字符* P,整型键)

{

而(* P!='\ 0') {

* P = 97 +(* P-97 +键)%26;

的p + +;

}

}

无效UNCODE(字符* P,诠释键)

{

而(* p值='\ 0')

{

* P = 97 +(* P-71-键)%26; ! P + +;

}

}

的main()

{

字符海峡[100];

整数n,则密钥; printf(“请输入密钥:”);

的scanf(“%d个”,&键);

printf(“请输入加密,解密输入2:”);

scanf函数(“%d个”,&N);

printf(“请输入一个字符串:”);

的scanf(“%S”,STR);

如果(N = 1)

代码(STR,键);

printf(“请密文为%s \ n”,海峡);

}

否则,如果(N = 2 )

{

UNCODE(STR,键);

的printf(“本来%S \ N”,海峡);

}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式