qq_51952323 2021-05-18 08:12 采纳率: 50%
浏览 40
已采纳

为什么这个函数调用时老是闪退?求大佬解惑(加密文件里面的内容)

void encode2() /*加密文件*/
{ 
	int m,n=strlen(password.ps),d;
	int i,flag = 1; //m存储加密字符长度 ,n存储加密字符串长度 ,i 为临时变量
	char N,w; 
	char c,C;//临时字符存储变量
	char ch='a';
	FILE *result = fopen("result.txt","wt"); 
	if(result == NULL ) 
	{
		printf("无法打开 result.txt \n");
		exit(0);
	} 
	FILE *source = fopen("source.txt","wt");
	if(source == NULL ) 
	{
		printf("无法打开 source.txt \n");
		flag = 0;
	}
    char filename[100];  //文件名 
    printf("请输入要加密的文件名及地址:\n"); 
	getchar();
    gets(filename);  //这句要用户输入文件名
	FILE *fp=fopen(filename,"r");
    if (fp==NULL)   //打开文件,并判断是否有打开错误
	{
		printf("无法打开文件\n"); 
		system("pause");
        exit(0);
	 }  
	 while((ch=fgetc(fp))!=EOF)
	 {
		 fputc(ch,source);
	 }
	if (flag = 1) C = fgetc(source);
	for( i=0;(c=fgetc(source)) != EOF;i++) 
	{ 
		static int a=1; 
		if((a<password.wd)&&(i%(password.l+1)==0))
		{ 
			N=c+password.ps[a%n]-48; 
			if(N>122) 
			{ 
				N=N%122; /*模运算*/
			} 
			fputc(N,result); 
			a++; 
		} 
		else fputc(N,result); 
	} 
	printf("\n加密成功!\n"); 
	fclose(result); 
	fclose(source);
	fclose(fp);
	system("pause");
}
  • 写回答

3条回答 默认 最新

  • CSDN专家-link 2021-05-18 08:29
    关注

    if (flag = 1) C = fgetc(source);

    改为if (flag == 1) C = fgetc(source);

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥30 YOLO检测微调结果p为1
  • ¥20 求快手直播间榜单匿名采集ID用户名简单能学会的
  • ¥15 DS18B20内部ADC模数转换器
  • ¥15 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题