Я хочу открыть новый файл и записать в него массив char, но когда я читаю содержимое файла, в нем есть то, что я написал, а затем куча мусорных символов.
I хочу сопоставить файл с памятью, но когда я читаю файл обратно с этой карты, я получаю случайные символы, следующие за ним.
...
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 байты, которые на самом деле не кажутся правильными, когда я пишу только массив символов такого маленького размера.
Простите меня за наглость, я совершенно новичок в чтении и записи файлов, а также в сопоставлении файлов , Я просто не могу понять, что я делаю неправильно с документацией, которую я нашел в Интернете.
Спасибо!