c语言 读取完文件加密后如何储存并修改呢 求助

读取完文件后进行加密操作,但是无法储存,求助帮忙修改一下,万分感谢#include<stdio.h>#include<stdlib.h>#include<math.h>#... 读取完文件后进行加密操作,但是无法储存,求助帮忙修改一下,万分感谢

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <conio.h> /*建议加入此头文件,以利于getch()的调用*/
FILE *fp;
char buffer[100] = {0};
int file()
{
FILE *fp = NULL;
int i = 0;

printf("请输入文档路径:\n");
char FILENAME[100]="";
scanf("%s",FILENAME);
if ((fp = fopen(FILENAME, "r")) == NULL) {
fprintf(stderr, "can't find file %s!\n", FILENAME); return false;
}

while(i<5)
{
while(1)
{ char ch = fgetc(fp);
if (ch != EOF)
{ buffer[i++] = ch; }
else { break; // 到达文件结尾了
}
}
buffer[i] = '\0';
fclose(fp);
//printf("nihao \n");
printf("%s\n", buffer); // 输出结果
return 0;
}
}

static int c = 1;
int jiami()
{
char a[256];
//printf("请输入要加密的数字\n");
//scanf("%s",a);
file();
for(int ii=0;ii<=strlen(buffer);ii++)
{
a[ii]=buffer[ii];

}

int b = strlen(a); //sizeof(*a);
for(int i = 0 ; i < b;i++){
a[i]=a[i]+c;
}
printf("加密后的密码为: %s\n",&a);
printf("***************\n");
printf("***************\n");
return 1;
}
int jiemi()
{
char b[256];
scanf("%s",b);
int a = strlen(b);
for(int i = 0 ; i < a;i++){
b[i]=b[i]-c;
}
printf("解密后的密码为:%s\n", b);
printf("***************\n");
printf("***************\n");
printf("***************\n");
return 1;
}
void mima(int c)
{
printf("设置成功\n");
printf("********\n");
printf("********\n");
printf("********\n");
}
void main()
{
int a;int b;
while (1)
{
printf("************************* 0 退出程序 *************************\n");
printf("************************* 1 进行加密 *************************\n");
printf("************************* 2 进行解密 *************************\n");
printf("************************* 3 设置密钥 *************************\n");
printf("你要进行的操作是\n");
scanf("%d",&a);
switch(a)
{
case 0:
exit(0);
case 1:

jiami();
continue;
case 2:
printf("请输入要解密的数字\n");
jiemi();
continue;
case 3:
printf("请输入四位数密钥\n");
scanf("%d",&c);
mima(c);
continue;
}
}
}
展开
 我来答
知秋小枫
推荐于2016-11-12 · TA获得超过132个赞
知道小有建树答主
回答量:98
采纳率:0%
帮助的人:77.8万
展开全部

大概的改了一下,有什么问题,再问吧

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <conio.h>  /*建议加入此头文件,以利于getch()的调用*/

char buffer[100] = {0};
static int c = 1;

int get_text()
{
int i = 0;
char file_name[100] = "a.txt";
FILE *fp;

if ((fp = fopen(file_name, "r")) == NULL)
{
fprintf(stderr, "can't find file %s!\n", file_name);
return -1;   
}
 
while(i < 5)
{
while(1)
{
char ch = fgetc(fp);  
if (ch != EOF)
{
buffer[i++] = ch;
}
else
{
break;   // 到达文件结尾了
}
}

buffer[i] = '\0';  
fclose(fp); 
//printf("nihao \n");
printf("%s\n", buffer); // 输出结果 
return 0;
}
}

int set_psw(char *psw)
{
int i = 0;
char file_name[100] = "b.txt";
FILE *fp;

if ((fp = fopen(file_name, "w+")) == NULL)
{
fprintf(stderr, "can't find file %s!\n", file_name);
return -1;   
}

fputs(psw, fp);
fclose(fp); 

return 0;
}

int jiami()
{
char a[256];
int i;

//printf("请输入要加密的数字\n");
//scanf("%s",a);
if (get_text() != 0)
{
return -1; 


for(i = 0; i <= strlen(buffer); i++)
{
a[i] = buffer[i];
}

for(i = 0 ; i < strlen(a); i++)
{
a[i] = a[i] + c;
}

if (set_psw(a) != 0)
{
return -1; 
}

printf("加密后的密码为: %s。已保存在b.txt文件中。\n", a);
printf("***************\n");
printf("***************\n");
return 0;
}

int jiemi()
{
char b[256];
int i; 

scanf("%s", b);
for(i = 0 ; i < strlen(b); i++)
{
b[i] = b[i] - c;
}

printf("解密后的密码为:%s\n", b);  
printf("***************\n");
printf("***************\n");
printf("***************\n");
return 0;
}

void mima(int c)
{
printf("设置成功\n");
printf("********\n");
printf("********\n");
printf("********\n");
}

int main()
{
int a;

while (1)
{
printf("*************************  0   退出程序     *************************\n");
printf("*************************  1   进行加密     *************************\n");
printf("*************************  2   进行解密     *************************\n");
printf("*************************  3   设置密钥     *************************\n");
printf("你要进行的操作是\n");

scanf("%d", &a);
switch(a)
{
case 0:
exit(0);
break; // 这里的break是匹配switch的 
case 1:
printf("请输入要加密的数字\n");
jiami();
continue; // 这里的continue是匹配while(1)的 
case 2:
printf("请输入要解密的数字\n");
jiemi();
continue; // 这里的continue是匹配while(1)的 
case 3:
printf("请输入四位数密钥\n");
scanf("%d", &c);
mima(c);
continue; // 这里的continue是匹配while(1)的 
}
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式