我正在尝试复制文件。我正在使用借来的代码片段,并且有一行错误让我感到困惑。
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 *,但我想确保我理解这里正在进行的过程。
答案 0 :(得分:2)
如果要分配size
个字节的缓冲区,并且buffer
指向它的开头:
void *buffer = malloc(size);
if (buffer == NULL) {
/* allocation failed */
}
/* ... */
但是如果你想对缓冲区中的数据做一些事情,它需要有一个有效的类型。 unsigned char
数组是管理任意内容缓冲区的常用方法:
unsigned char *buffer = malloc(size);
/* as above */
答案 1 :(得分:0)
sizeof()返回您的类型的大小。老实说,我认为你应该把它改成
char *buffer;
buffer = malloc(sizeof(char) * size);
Sizeof(void)无效