したがって、テキストファイルをバイナリファイルに変換する必要があります。テキストファイルをcのバイナリファイルに変換する
テキストファイルの例があり得る姓識別GPA (ストリング列unsigned int型フロート)ままのフォーマットでテキストファイル:
ジョン・スミス32 2.5
ジョー・ヤング12 3.4
void textToBinary(char *inp, char *out)
{
FILE *finp;
FILE *fout;
unsigned int x;
float y;
char first[SIZE], last[SIZE];
finp = fopen(inp, "r");
fout = fopen(out, "w");
rewind(finp);
while(1)
{
fscanf(finp, "%s %s %u %f\n", first, last, &x, &y);
fwrite(first, 1, sizeof(char), fout);
fwrite(last, 1, sizeof(char), fout);
fwrite(&x, 4, sizeof(unsigned int), fout);
fwrite(&y, 4, sizeof(int), fout);
if(feof(finp))
{
break;
}
}
fclose(finp);
fclose(fout);
}
itsunixでdiffコマンドを使うと、出力されたバイナリファイルをバイナリファイルのように見比べることができます。
>diff output.bin b1.bin
>Binary Files output.bin b1.bin differ
これは、テキストファイルが適切なバイナリファイルに正しく変換されていないことを意味します。
ヒント: 'size_t fwrite(const void * buffer、size_t size、size_t count、FILE * stream)'のような 'fwrite'パラメータをチェックしてください。特にサイズとカウントを別々に指定する可能性があります。 –
'first'と' last'の両方について、なぜあなたは1つのchar( 'fwrite(first、1、sizeof(char)、fout);')だけを記録したのですか? –
あなたの問題は何ですか?もう一度お読みください[「どうすれば良い質問をしますか?」](http://stackoverflow.com/help/how-to-ask)。 –