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 に答える