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);
}
}
为什么程序可以运行,但写入的文件是空的?坐等。 展开
#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);
}
}
为什么程序可以运行,但写入的文件是空的?坐等。 展开
1个回答
展开全部
#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;//少了字符串结尾
}
#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;//少了字符串结尾
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询