Ich versuche, Daten aus einer sehr großen Binärdatei zu lesen und verarbeiten sie mithilfe von Speicherzuordnung, so dass es byteweise gelesen werden kann. Ich bekomme dabei ein paar Compiler-Fehler, und ich kann nicht herausfinden, was sie verursacht. Ich mache das auf einer Linux-Plattform, für die Aufzeichnung.Verwenden von Speicherabbildung in C zum Lesen binär
#include <unistd.h>
#include <sys/types.h>
#include <sys/mman.h>
#include<stdio.h>
#include<stdlib.h>
int fd;
char *data;
fd = open("data.bin", O_RDONLY);
pagesize = 4000;
data = mmap((caddr_t)0, pagesize, PROT_READ, MAP_SHARED, fd, pagesize);
Die Fehler, die ich bekommen sind wie folgt:
caddr nicht
initialisiertR_RDONLY nicht initialisiert
Mmap hat zu wenige Argumente.
ich ein Makefile bin mit ihm zu kompilieren, die wie folgt aussieht:
all: order_book
CC = gcc
CFLAGS = -std=c99
order_book: main.c
$(CC) $(CFLAGS) -o order_book main.c
clean:
rm -f order_book
Was mache ich falsch, und was kann ich tun, um es zu beheben?
Es sieht aus wie Sie einen anderen Header-Datei enthalten müssen. Vielleicht "stdio.h" oder "stdlib.h"? –
Ich hatte sie schon. Vergessen, sie in der Frage – AndroidDev93
zu erwähnen Der Code, der fehlschlägt, ist genau derselbe wie oben. Ich benutze ein Makefile, um mein Programm zu kompilieren. Ich habe den Inhalt in der obigen Frage Box gezeigt – AndroidDev93