标题:将一个文件的内容,做字符循环移动加密后,拷贝到另一个文件中,使用fputs( ...
只看楼主
小燃
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2015-1-24
结帖率:100%
已结贴  问题点数:10 回复次数:3 
将一个文件的内容,做字符循环移动加密后,拷贝到另一个文件中,使用fputs()函数出错,程序崩溃。本人新手,求帮忙。。。
#include <stdio.h>
#include <stdlib.h>
#define LEN 50    //数组大小
//该程序作用为:通过将文件t1.text中的字符每个字符的ASCLL+4,做加密处理,然后存放在文件t2.text中
int main(int argc,char *argv[])
{
    FILE *in,*out;//两个文件指针
    char words[LEN]; //用来存放t1.text中的字符
    int i;
    char ch;
   
    if((in=fopen("t1.text","r"))==NULL
       && (out=fopen("t2.text","w"))==NULL)   //文件不能打开,则退出
       {
              printf("Can't open the file.\n");
              exit(1);
       }
    fgets(words,LEN,in);  //读取t1.text中的字符,并存在words数组中
    printf("%s\n",words);
    for(i=0;(ch=words[i])!='\0';i++)//将数组中的字符的ASCLL+4,做加密处理
    {
        if('a'<=ch&&ch<='v')
        {
            words[i]=ch+4;
        }
        else if('w'<=ch&&ch<='z')
        {
            words[i]=ch-22;
        }
    }
    printf("%s",words);
    fputs(words,out);   //通过fputs函数,将words数组中的字符串存到t2.text中   

经过调试后,发现到fputs函数之后就出错了, 程序便崩溃了!出错的原因是函数用错吗?请问有什么方法可以解决?

    if(fclose(in)!=0&&fclose(out)!=0)   //文件不能正常关闭,则退出
    {
        printf("Can't  the file.\n");
        exit(2);
    }
      
    return 0;
}
搜索更多相关主题的帖子: include 加密 file 
2015-04-08 18:58
n0noper
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:39
专家分:159
注 册:2015-3-21
得分:10 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#define LEN 50    //数组大小
//该程序作用为:通过将文件t1.text中的字符每个字符的ASCLL+4,做加密处理,然后存放在文件t2.text中

int main(int argc,char *argv[])
{
    FILE *in,*out;//两个文件指针
    char words[LEN]; //用来存放t1.text中的字符
    int i;
    char ch;

    /*这里真是蛋疼,你文件后缀名独特刚啊*/
    if((in=fopen("t1.text","r"))==NULL        /*这里用或 会更好*/
       /* && */ || (out=fopen("t2.text","w"))==NULL)   //文件不能打开,则退出
    {
        printf("Can't open the file.\n");
        exit(1);
    }
    fgets(words,LEN,in);  //读取t1.text中的字符,并存在words数组中
    /*友情提示:如果这里用fgets只能读一行,自己看着办*/
    printf("%s\n",words);
    for(i=0;(ch=words[i])!='\0';i++)//将数组中的字符的ASCLL+4,做加密处理
    {
        if('a'<=ch&&ch<='v')
        {
            words[i]=ch+4;
        }
        else if('w'<=ch&&ch<='z')
        {
            words[i]=ch-22;
        }
    }
    printf("%s\n",words);
    fputs(words,out);   //通过fputs函数,将words数组中的字符串存到t2.text中  

//    经过调试后,发现到fputs函数之后就出错了, 程序便崩溃了!出错的原因是函数用错吗?请问有什么方法可以解决?
   
/*        if(fclose(in)!=0&&fclose(out)!=0)   //文件不能正常关闭,则退出
        {
            printf("Can't  the file.\n");
            exit(2);
        }
*/    
    fclose(in);
    fclose(out);
    in = out = NULL;
   
    return 0;

 } 



有什么问题,再讨论

不骄不躁,不卑不亢;虚怀若谷,宠辱不惊。
2015-04-09 22:00
小燃
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2015-1-24
得分:0 
回复 2楼 n0noper
测试了一下,发现是用&&之后才会出现问题,用或则不会。能解释一下吗?
2015-04-14 01:20
n0noper
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:39
专家分:159
注 册:2015-3-21
得分:0 
回复 3楼 小燃
&&:    与,并且,你表达的就是“文件1打不开 并且 文件2打不开”才会退出。但是这是你的初衷吗?
应该是一旦有一个文件打不开,就进行不了下一步操作,也就over了。(这里创建文件除外啊,别较真)

不骄不躁,不卑不亢;虚怀若谷,宠辱不惊。
2015-04-14 21:37



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-443715-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.530050 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved