假设我有一个包含以下值的数组:
int numbers = [12, 511, 337, 254];
现在,我想将这些数字缩放为单字节值并存储在其中 一个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’)
任何人都知道我错过了什么? 谢谢!
答案 0 :(得分:3)
是的,你错过了sizeof
。
sizeof(numbersscaled)/sizeof(numbersscaled[0])
请注意,您的问题中存在许多拼写错误(缺少[]
等),因此难以检测到真正的问题。请修理它。
答案 1 :(得分:0)
numberscaled应该是字符数组而不是char。
fwrite(numbersscaled, sizeof(numbersscaled[0]), 4, filebin);
答案 2 :(得分:0)
有些事情不对,
numbersscaled/numbersscaled[0]
不是char numberscaled[4]
吗?你已经在你的问题中宣称它是一个字符。
您应该再次阅读fwrite
手册页。