基本的には、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)として、ファイルの実際のバイナリデータを読み取るために私を助けることができれば、私は本当に感謝。
「バイナリモード」でファイルを開くと、読んだときに特別な処理を行わずにそのままのデータが得られるということです。出力するとそのまま出力され、ガベージのように見えます。 0と1として出力したい場合、それを行うためのコードを書く必要があります。 – kfsone
@Wajid正しくバイナリとして読んでいます。問題は、C/C++ではバイナリプリミティブデータ型がないため、通常は文字(8ビット/文字)として格納されます。このバイナリデータを文字列のように印刷するようにランタイムに指示しているので、シンボルを取得しているのは、印刷しているバイナリデータの文字列表現であるためです。これを見てください:[バイナリを文字列に変換する](/ questions/2343099/convert-binary-format-string-int-in-c) – Tibrogargan
ジョブを正しく実行したい場合は、自分で行う必要があります。 'printf'はバイナリで出力する変換指定子を持っていません。したがって、外側のループがバッファから文字を取得し、内側のループが文字を変換してバイナリとして出力するネストループを作成する必要があります。 – user3386109