我使用fputc有问题-也许有人能帮上忙。我在开始时分配了一些存储空间,并分配给data = 'B‘和data1 = 'M’--数组的其余部分都填充了数字。然后,数据将写入..bmp File中:
//this scenario works
unsigned long *data;
data = malloc(55);
data[0] = 'B';
data[1] = 'M';
data[2] = 34;
data[3] = 0;
.
.
.
data[55] = 0;
unsigned long long i;
FILE *output;
output = fopen("output.bmp", "wb+");
if(output==NULL) {
printf("ERROR writing files!\n");
}
for( i = 0; i < 55; i++)
{
fputc(data[i], output);
}
fclose(output);其余的(data2 - data55)是用数字填充的。当我将数据写入.bmp文件时,一切正常(在本例中,我生成了一个蓝色的1px)。现在,如果我想要一个更大的.bmp文件,例如:
//this scenario doesn't work
unsigned long *data;
data = malloc(300000);
data[0] = 'B';
data[1] = 'M';
data[2] = 34;
data[3] = 0;
.
.
.
data[300000] = 0;
unsigned long long i;
FILE *output;
output = fopen("output.bmp", "wb+");
if(output==NULL) {
printf("ERROR writing files!\n");
}
for( i = 0; i < 300000; i++)
{
fputc(data[i], output);
}
fclose(output);发生下列错误:
分割故障: 11
我发现,malloc的最后一个大小,也就是它工作的地方是malloc(130000) --所有这些都不起作用。有没有人知道,我怎样才能解决这个问题?
我还试着把fputc改为fwrite失败。
非常感谢!问候
发布于 2017-12-01 17:01:06
这是错误的,因为它需要300,000 *大(长)字节,但您只分配了300,000字节。
unsigned long *data;
data = malloc(300000);我认为你需要(因为你好像在写字节)
unsigned char *data;
data = malloc(300000);或(不太可能)
unsigned long *data;
data = malloc(300000 * sizeof(long));https://stackoverflow.com/questions/47597944
复制相似问题