C解密程序

时间:2015-03-01 11:26:38

标签: c encryption while-loop

当我编译程序并运行它时,它不会打印任何内容。我相信这个问题暂时存在,但我无法理解错误。它应该将十六进制转换为ASCII,然后转换为加密的消息。

    #include<stdlib.h>
    #include<stdio.h>
    #include<string.h>
    int main(int argc, char **argv) {
         int p;
//Opening a file
         FILE*tp; 
             tp = fopen(argv[1], "r");
            if(tp == NULL)
         {
            printf("Error opening file!\n");
            return 0;
         }
         else
         {
//Decryption code
            while((p=fscanf(" %x",&p))!=EOF)
            { 
            p=p >> 2;
            p=p - 200;
            printf(" %c",p);
            }
         }
        return 1;
        fclose(tp);
    }

2 个答案:

答案 0 :(得分:1)

fscanf()返回成功匹配和分配的输入项数,而不是输入项本身。另外,如上所述,您需要将文件指针传递给该函数。试试这个:while(fscanf(tp, "%x", &p) != EOF)

答案 1 :(得分:0)

看起来你需要指定并向fscanf函数提供FILE指针“tp”。