null 바이트로 파일을 채우는 char *
경우 C에서 파일을 조작하는 것 같습니다 .이 경우 파일을 null 바이트로 채울 필요가 없으며 끝에 null 바이트 만 추가하면됩니다 파일의 다음 임의의 바이트로 채울 수 있습니다. 이 경우 C 프로그램 벨로우즈는 매우 효율적입니다 (두 번째 매개 변수보다 작은 파일에만 사용하고 그렇지 않으면 데이터를 덮어 씁니다). lseek
함수 정의에 다음과 같이 명시 되어 있으므로 원하는 것을 수행 할 수도 있습니다 (널 바이트로 채 웁니다) .
lseek () 함수는 파일 오프셋이 파일의 기존 데이터 끝을 넘어서 설정되도록합니다. 이 시점에서 데이터가 나중에 쓰여지면, 갭에서 데이터의 후속 읽기는 데이터가 실제로 갭에 쓰여질 때까지 값이 0 인 바이트를 반환합니다.
이 경우에 제 1 호 lseek
및 write
제거 할 수 있습니다. 그러나 테스트는 시스템에서 먼저 수행해야합니다 ...
#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;
}