【发布时间】:2017-02-12 21:52:26
【问题描述】:
所以我需要将文本文件转换成二进制文件。
文本文件格式为-
名字 姓氏 id gpa (string string unsigned int float)
文本文件的示例可能是:
乔恩·史密斯 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
所以这一定意味着我的文本文件没有正确转换为正确的二进制文件。
【问题讨论】:
-
提示:检查
fwrite参数,即size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream ),尤其是单独提供大小和计数的可能性。 -
对于
first和last,为什么只记录了1 个字符(fwrite(first, 1, sizeof(char), fout);)? -
您的问题到底是什么?请再读一遍"How do I ask a good question?"。
标签: c file-conversion