그래서 텍스트 파일을 이진 파일로 변환해야합니다.텍스트 파일을 C의 이진 파일로 변환
텍스트 파일의 예는 될 수이름 성 아이디 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);
}
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)'매개 변수를 확인하십시오. 특히 사이즈와 카운트를 별도로 제공 할 수 있습니다. –
'first'와'last' 둘 다 왜 1 개의 char ('fwrite (first, 1, sizeof (char), fout);) 만 기록 되었습니까? –
정확히 무엇이 문제입니까? 다시 읽으십시오 [ "나는 좋은 질문을합니까?]"(http://stackoverflow.com/help/how-to-ask). –