Так что мне нужно преобразовать текстовый файл в двоичный файл.Преобразование текстового файла в двоичный файл в c
Текстовый файл в форматированный как-
Имя Фамилия ID GPA (строка строки без знака 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);
}
Используя команду 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 char ('fwrite (first, 1, sizeof (char), fout);')? –
В чем проблема? Пожалуйста, прочитайте снова [«Как задать хороший вопрос?»] (Http://stackoverflow.com/help/how-to-ask). –