当我编译程序并运行它时,它不会打印任何内容。我相信这个问题暂时存在,但我无法理解错误。它应该将十六进制转换为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);
}
答案 0 :(得分:1)
fscanf()
返回成功匹配和分配的输入项数,而不是输入项本身。另外,如上所述,您需要将文件指针传递给该函数。试试这个:while(fscanf(tp, "%x", &p) != EOF)
答案 1 :(得分:0)
看起来你需要指定并向fscanf函数提供FILE指针“tp”。