程序读取文本或二进制文件并以十六进制和ascii打印内容的问题

时间:2016-09-22 01:18:00

标签: c io

我正在尝试练习文件I / O.我正在尝试编写一个程序来读取任何文件(文本或二进制文件)并以十六进制和ascii打印内容。问题是我试图弄清楚编译器如何知道文件是文本还是二进制文件。我在下面提供的代码将二进制转换为十六进制。我也不确定如何将所需的输出打印到屏幕上。我已尝试使用put函数,但它会导致程序中出现很多错误。关于编译器如何知道文件是文本还是二进制文件的任何想法。我想我们可以使用if语句,但我不确定。

#include <stdio.h>

int main(int argc, const char * argv[]) {

FILE * file;
file = fopen( "test.txt" , "r");
char textFile[1000];
while (!feof(file)) {
    fgets(textFile, 1000, file);
    char binaryNumber[1000],hexaDecimal[1000];
    int temp;
    long int i=0,j=0;

            while(binaryNumber[i]){
        binaryNumber[i] = binaryNumber[i] -48;
        ++i;
    }

    --i;
    while(i-2>=0){
        temp =  binaryNumber[i-3] *8 + binaryNumber[i-2] *4 +  binaryNumber[i-1] *2 + binaryNumber[i] ;
        if(temp > 9)
            hexaDecimal[j++] = temp + 55;
        else
            hexaDecimal[j++] = temp + 48;
        i=i-4;
    }

    if(i ==1)
        hexaDecimal[j] = binaryNumber[i-1] *2 + binaryNumber[i] + 48 ;
    else if(i==0)
        hexaDecimal[j] =  binaryNumber[i] + 48 ;
    else
        --j;

    printf("Equivalent hexadecimal value: ");
    while(j>=0){
        printf("%c",hexaDecimal[j--]);
    }

    return 0;
}

}

fclose(file);

0 个答案:

没有答案