-2

次の値を含む配列番号があるとします。

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

ここで、これらの数値を1バイト値にスケーリングし、char配列に格納したいと思います。

char numbersscaled;  

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

最後に、これらの値を次のようにバイナリファイルとして記述します。

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

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

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

fclose(filebin);   

残念ながら、このプログラムをコンパイルしようとすると、gccはfwriteコマンドを好みません。

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

誰かが私が欠けているものを知っていますか?ありがとう!

4

3 に答える 3

3

はい、あなたは行方不明sizeofです。

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

質問には多くのタイプミス(欠落[]など)があり、実際の問題を検出するのが難しいことに注意してください。修正してください。

于 2009-07-02T08:43:00.593 に答える
0

numbersscaledは、charではなくcharの配列である必要があります。

fwrite(numbersscaled, sizeof(numbersscaled[0]), 4, filebin); 
于 2009-07-02T08:46:05.503 に答える
0

何かがおかしい、

numbersscaled/numbersscaled[0]

そうですねchar numberscaled[4]。あなたはあなたの質問でそれをcharとして宣言しました。

fwriteマニュアルページをもう一度読む必要があります。

于 2009-07-02T08:46:23.660 に答える