0

我正在尝试复制文件。我正在使用借用的代码片段,其中有一行错误让我感到困惑。

int fileread = open("original.txt", O_RDONLY);
void *buffer;
buffer = malloc(sizeof(void) * size);  /*This line gives "Incomplete type not allowed."*/

int nread = read(fileread,buffer,size);

int filewrite = open("original.txt.backup",O_CREAT | O_RDWR, 0644);

write(filewrite,buffer,size);

close(filewrite);
close(fileread);

我应该改用什么?我在想 char*,但我想确保我理解这里正在进行的过程。

4

2 回答 2

2

如果要分配size字节缓冲区,并buffer指向它的开头:

void *buffer = malloc(size);
if (buffer == NULL) {
    /* allocation failed */
}
/* ... */

但是如果你想对缓冲区中的数据做一些事情,它需要有一个有效的类型。数组unsigned char是管理任意内容缓冲区的常用方法:

unsigned char *buffer = malloc(size);
/* as above */
于 2012-11-18T04:27:09.347 回答
0

sizeof() 返回类型的大小。老实说,我认为您应该将其更改为

char *buffer;
buffer = malloc(sizeof(char) * size);

Sizeof(void) 的意义为零

于 2012-11-18T04:20:25.437 回答