C文件写入读取问题

//写一个文件加密程序,自己设计加密规则。再写一个解密程序。#include<stdio.h>#include<string.h>voidgetstr(char*p);/... //写一个文件加密程序,自己设计加密规则。再写一个解密程序。
#include<stdio.h>
#include<string.h>

void getstr(char *p);//获得数据
void encrypt(char *source, char *object);//加密数据
void memory(char *, FILE *);//加密数据存入文件
void decrypt(char *, FILE *);//读取数据并解密

int main()
{
char sourcestr[100];//源数据
char objectstr[100];//加密后数据
char decryptstr[100];//解密数据

getstr(sourcestr);//获得数据

// printf("源:%s\n", sourcestr);

encrypt(sourcestr, objectstr);//加密数据

// printf("加密:%s\n", objectstr);

FILE *fp=fopen("a.txt", "w+");
if(fp==NULL)
{
printf("Can't open the file\n");
return 1;
}

memory(objectstr, fp);//加密数据存入文件
decrypt(decryptstr, fp);//读取数据并解密

printf("%s\n", decryptstr);//输出

return 0;
}

void getstr(char *p)
{
printf("Enter your data:\n");
fgets(p, 100, stdin);//读取一行数据,但不丢弃换行符
p[strlen(p)-1]='\0';//去掉末尾换行,加上字符串结束符
}

void encrypt(char *source, char *object)
{
while(*source!='\0')//循环结束时,object字符串结尾缺少'\0'
{
*object=*source+1;
object++;
source++;
}
*object='\0';//object字符串结尾加上'\0'
}

void memory(char *object, FILE *fp)
{
fputs(object, fp);
}
void decrypt(char *decrypt, FILE *fp)
{
char c;
fscanf(fp, "%c", &c);
while(c!=EOF)
{
*decrypt++=c-1;
fscanf(fp, "%c", &c);
}
}
为什么程序可以运行,但写入的文件是空的?坐等。
展开
 我来答
478617
推荐于2016-06-30 · TA获得超过875个赞
知道小有建树答主
回答量:725
采纳率:100%
帮助的人:92万
展开全部
#include<stdio.h>
#include<string.h>

void getstr(char *p);//获得数据
void encrypt(char *source, char *object);//加密数据
void memory(char *, FILE *);//加密数据存入文件
void decrypt(char *, FILE *);//读取数据并解密

int main()
{
char sourcestr[100];//源数据
char objectstr[100];//加密后数据
char decryptstr[100];//解密数据

getstr(sourcestr);//获得数据

// printf("源:%s\n", sourcestr);

encrypt(sourcestr, objectstr);//加密数据

// printf("加密:%s\n", objectstr);

FILE *fp=fopen("a.txt", "w+");
if(fp==NULL)
{
printf("Can't open the file\n");
return 1;
}

memory(objectstr, fp);//加密数据存入文件
fseek(fp, 0, 0);//这里因该添上
decrypt(decryptstr, fp);//读取数据并解密

printf("%s\n", decryptstr);//输出
fclose(fp);//文件使用结束后记得关闭。

return 0;
}

void getstr(char *p)
{
printf("Enter your data:\n");
fgets(p, 100, stdin);//读取一行数据,但不丢弃换行符
p[strlen(p)-1]='\0';//去掉末尾换行,加上字符串结束符
}

void encrypt(char *source, char *object)
{
while(*source!='\0')//循环结束时,object字符串结尾缺少'\0'
{
*object=*source+1;
object++;
source++;
}
*object='\0';//object字符串结尾加上'\0'
}

void memory(char *object, FILE *fp)
{
fputs(object, fp);
}
void decrypt(char *decrypt, FILE *fp)
{
char c;
fscanf(fp, "%c", &c);
while(!feof(fp))//这里错了
{
*decrypt++ = c - 1;
fscanf(fp, "%c", &c);
}
*decrypt = 0;//少了字符串结尾
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式