2013-12-07 4 views
0

Я пытаюсь transfrom в текстовый файл в двоичный файл, то TXT включает номера 1-20 деленное на (ввести). Пока я знаю, что он отлично работает (отлаживает его), но, возможно, он может включать ошибки, чтобы вы могли его увидеть. После этого я хочу проверить, что такое мой двоичный файл. Я хочу, чтобы печатать двоичный файл для мониторинга. Однако он печатает одну секцию памяти. Не можете мне помочь в решении проблемы с ? заранее спасибопреобразование TXT в BIN, и распечатать содержание BIN

void txt_to_bin (void)         /*Make binary from txt*/ 
{ 
    FILE *ft,*fb; 
    int a; 
    ft = fopen("binadatok.txt","rt"); 
    fb = fopen("versenyazonosito.dat","wb"); 
    while (fscanf(ft,"%d\n",&a) != EOF) 
    { 
     fwrite(&a,sizeof(a),1,fb); 
     printf("%d\n", a); 
    } 
} 

void bin_olvas(void)      /*Print out the binary*/ 
{ 
    FILE *f; 
    int k; 
    f = fopen("versenyazonosito.dat","rb"); 
    while(!feof(f)) 
    { 
     (fscanf(f,"%d\n",&k) != EOF); 
     printf("%d\n", k); 
    } 
    fclose(f); 
} 
+0

'(fscanf (f,"% d \ n ", & k)! = EOF);' что это должно делать? – wildplasser

+0

Я хотел отсканировать int из f и сохранить его в k – Marcell

+0

Но почему вы заключили его в prentheses и положили точку с запятой после него '(abcd == 1234);'? Учитывая -Wall, GCC, вероятно, будет жаловаться: «заявление не имеет смысла». – wildplasser

ответ

0

fscanf(f, "%d\n", &k) полезен только для чтения файла ASCII. Вы не можете использовать его для чтения двоичных данных с versenyazonosito.dat. Вам нужно будет использовать fread или что-то подобное.

+0

изменил мое чтение бинарного, как вы сказали FREAD, но он по-прежнему отдавая грязь памяти (в то время как (feof (е)) \t { \t (Fread (& к, SizeOf (к), 1, е)!); \t \t printf ("% d \ n", k); \t \t} – Marcell

Смежные вопросы