2009-07-02 10 views
0

Lets sagen, dass ich ein Array Zahlen haben, enthält die folgenden Werte:Schreiben Integer-Werte in binäre Datei

int numbers = [12, 511, 337, 254]; 

Nun würde Ich mag diese Zahlen in einzelnen Byte-Werte skalieren und speichern sie in ein char-Array

char numbersscaled; 

for(i=0; i<4; i++) { 
    numbersscaled[i] = numbers[i]/2; 
} 

Schließlich würde Ich mag diese Werte als Binärdatei schreiben, wie folgt:

filebin = fopen("results.bin", "wb"); 

if(file==NULL) { 
    printf("Error\n"); 
    return 1; 
} 

fwrite(numbersscaled, sizeof(numbersscaled[0]), 
     numbersscaled/numbersscaled[0], filebin); 

fclose(filebin); 
Leider

, wenn man versucht, dieses Programm gcc zu kompilieren nicht den Fwrite Befehl mag:

error: invalid operands to binary/(have ‘char *’ and ‘int’) 

jemand eine Idee, was ich fehle? Danke!

+0

Sie konvertieren ein Int in ein Zeichen ... Warum kann der Wert größer als in ein Byte passen? –

Antwort

3

Ja, Sie vermissen sizeof.

sizeof(numbersscaled)/sizeof(numbersscaled[0]) 

Hinweis, dass es viele Fehler in Ihrer Frage (fehlenden [], etc.), so dass es schwer, das eigentliche Problem zu erkennen. Bitte repariere es.

+0

danke, das ist es. Sorry es ist früh am Morgen, also noch ganz wach;) –

+0

Gut, sollte besser werden, wenn du wieder zur normalen wachen Schläfrigkeit triefst :-) – nik

0

Zahlenskalierung sollte Array von Zeichen nicht char.

fwrite(numbersscaled, sizeof(numbersscaled[0]), 4, filebin); 
0

Irgendetwas stimmt nicht mit,

numbersscaled/numbersscaled[0] 

Ist es nicht char numberscaled[4]? Du hast es in deiner Frage als Char deklariert.

Sie sollten die Manpage fwrite erneut lesen.