Jika Anda mengisi file Anda dengan byte nol, tebakan saya adalah bahwa Anda memanipulasi file dalam huruf char *
C. Jika ini yang terjadi, Anda mungkin tidak perlu memuat file dengan null byte, hanya menambahkan byte nol di bagian akhir. file dan kemudian padding dengan byte acak bisa cukup. Dalam hal ini, program C di bawah ini akan sangat efisien (hanya digunakan pada file yang lebih kecil dari parameter ke-2, jika tidak, data akan ditimpa). Bahkan mungkin melakukan apa yang Anda inginkan (padding dengan byte nol) karena lseek
definisi fungsi menyatakan bahwa:
Fungsi lseek () harus memungkinkan offset file diatur di luar akhir data yang ada dalam file. Jika data kemudian ditulis pada titik ini, selanjutnya pembacaan data di celah akan mengembalikan byte dengan nilai 0 sampai data benar-benar ditulis ke dalam celah.
Dalam hal ini, panggilan pertama ke lseek
dan write
dapat dihapus. Tetapi tes harus dilakukan pada sistem Anda ... Pertama ...
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
/* 1st parameter: a file name, 2nd parameter: a file size. */
int main(int argc, char ** args) {
int nfd = open(args[1], O_WRONLY);
lseek(nfd, 0, SEEK_END);
write(nfd, "\0", 1);
lseek(nfd, atoi(args[2]) - 1, SEEK_SET);
write(nfd, "\0", 1);
close(nfd);
return 0;
}