基本上,我试图使用 fread() 读取文件的二进制数据并使用 printf() 将其打印在屏幕上,现在的问题是,当它打印出来时,它实际上没有显示为二进制 1 和 0 但打印符号和我不知道它们是什么的东西。
我就是这样做的:
#include <stdio.h>
#include <windows.h>
int main(){
size_t sizeForB, sizeForT;
char ForBinary[BUFSIZ], ForText[BUFSIZ];
char RFB [] = "C:\\users\\(Unknown)\\Desktop\\hi.mp4" ; // Step 1
FILE *ReadBFrom = fopen(RFB , "rb" );
if(ReadBFrom == NULL){
printf("Following File were Not found: %s", RFB);
return -1;
} else {
printf("Following File were found: %s\n", RFB); // Step 2
while(sizeForB = fread(ForBinary, 1, BUFSIZ, ReadBFrom)){ // Step 1
printf("%s", ForBinary);
}
fclose(ReadBFrom);
}
return 0;
}
如果有人可以帮助我将文件的实际二进制数据读取为二进制 (0,1),我将非常感激。
最佳答案
while(sizeForB = fread(ForBinary, 1, BUFSIZ, ReadBFrom)){
printf("%s", ForBinary); }
这在很多层面上都是错误的。首先,您说它是二进制文件 - 这意味着它首先可能没有文本,并且您正在使用 %s
格式说明符,该格式说明符用于打印以 null 结尾的字符串。同样,由于这是二进制文件,并且其中可能首先没有文本,因此 %s
是使用错误的格式说明符。即使此文件中有文本,您也不确定 fread
是否会读取一个“完整”的以 null 结尾的字符串,您可以使用格式说明符 将其传递给
。printf
>%s
您可能想要做的是,从文件中读取每个字节,将其转换为二进制表示形式(谷歌如何将整数转换为二进制字符串,例如 here ),然后打印每个字节的二进制表示形式.
基本上是伪代码:
foreach (byte b in FileContents)
{
string s = convertToBinary(b);
println(s);
}
关于c++ - 如何复制文件的二进制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37492739/