我想打开一个新文件并向其中写入一个char数组,但是当我读回文件的内容时,它具有我写的内容,后跟一堆垃圾字符。
我想将文件映射到内存,但是当我从该映射读回文件时,我得到的是那些随机字符。
...
char *towrite = "12345"
int fd = open("file.txt",O_RDWR | O_CREAT,S_IRUSR | S_IWUSR);
struct stat sb;
write(fd,&towrite,sizeof(towrite));
if(fstat(fd,&sb) != -1){
printf("file is %ld bytes long.\n",sb.st_size);
}
char *mappedfile = mmap(NULL,sb.st_size,PROT_READ | PROT_WRITE,MAP_SHARED,fd,0);
for(int z=0; z < sb.st_size; z++){
printf("%c",mappedfile[z]);
}
printf("\n");
close(fd);
...
我还注意到文件大小恢复为1790字节,当我只写一个很小的char数组时,这似乎并不正确。
请原谅我的无礼,我对文件读写和文件映射完全陌生。我似乎无法在网上找到的文档中找到我做错的事情。
谢谢!