标题:关于文件的问题, 大家一起来研究。
只看楼主
xueyuhanhai
Rank: 4
等 级:业余侠客
帖 子:90
专家分:238
注 册:2010-4-5
得分:0 
table是char类型的啊。十进制的数字自动转换为char类型的啊。我好像看到问题了:
下面是一个小程序:
#include "stdafx.h"
#include "stdio.h"

int main(int argc, char* argv[])
{
    FILE *fp;
    char ch,s[100]={'\0'};
    int j=0 ;
    fp=fopen("e:\\e.txt","r");
    while((ch=fgetc(fp))!=EOF)
    {
        s[j]=ch;
        j++;
        ch=fgetc(fp);
    }
    printf("%s",s);
    fclose(fp);
    printf("\n");
   

    printf("Hello World!\n");
    return 0;
}


我的e.txt中的内容是:abcdef
但是输出时候是:ace

但是如果是这样的话:
#include "stdafx.h"
#include "stdio.h"

int main(int argc, char* argv[])
{
    FILE *fp;
    char ch,s[100]={'\0'};
    int j=0 ;
    fp=fopen("e:\\e.txt","r");
    ch=fgetc(fp);
    while(ch!=EOF)
    {
        s[j]=ch;
        j++;
        ch=fgetc(fp);
    }
    printf("%s",s);
    fclose(fp);
    printf("\n");
   

    printf("Hello World!\n");
    return 0;
}
就可以正常的输出。
郁闷,怎么回事。

[ 本帖最后由 xueyuhanhai 于 2010-5-26 10:07 编辑 ]
2010-05-25 20:33
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
得分:10 
回复 楼主 xueyuhanhai
你重新打开加密后的文件应该用读的方式打开,如果是用写的方式打开,原来的内容就被清空了。
请楼主检查看看有没有这个问题?

希望对你有帮助。

南国利剑
2010-05-26 00:01
zhujianiu
Rank: 4
等 级:业余侠客
帖 子:126
专家分:244
注 册:2010-5-14
得分:10 
我觉得要加密的话还是用二进制打开的好! 那样的话!很多字符转换的问题都不需要担心!
2010-05-26 00:07
xueyuhanhai
Rank: 4
等 级:业余侠客
帖 子:90
专家分:238
注 册:2010-4-5
得分:0 
fseek(fp,1L*k2+1,SEEK_SET);和fseek(fp,1L*k1+1,SEEK_SET);
应该是:fseek(fp,1L*k2,SEEK_SET);和fseek(fp,1L*k1,SEEK_SET);
我粗心了。最后可以把相同的密钥的文件进行还原。谢谢大家的意见。代码我从新编辑了。为最终的正确的代码。
2010-05-26 10:39
韩明海
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:253
专家分:749
注 册:2010-4-3
得分:0 
    while((ch=fgetc(fp))!=EOF)     ch = a ,c,e
    {
        s[j]=ch;
        j++;
        ch=fgetc(fp);     ch = b ,d,f
    }
第二次或得的 b,d,f没有存到s中
2010-05-28 12:32



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




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

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