Ich lese in einer Zeile aus einer Datei (char von char, mit fgetc()), wo alle Felder (Vorname, Nachname, ...) durch ein getrennt sind ;
. Was ich jetzt tun möchte, ist ein char**
erstellen, fügen Sie alle Zeichen hinzu und ersetzen Sie die ;
von \0
, so dass ich effektiv eine Liste aller Felder erhalten.c Aufteilen eines char * in ein char **
Ist das möglicherweise möglich? Und wenn ich ein Char **, z. char ** buf = malloc(80)
kann ich es wie ein eindimensionales Array behandeln? Wenn der Speicher von malloc zusammenhängend zurückgegeben wird?
EDIT
Sry, bedeutete ;
von \0
, bot \n
zu ersetzen.
EDIT 2
sollten Dieser Code zeigen, was ich beabsichtige zu tun (ein wenig kann klären Dinge):
int length = 80; // initial length char *buf = malloc(length); int num_chars = 0;
// handle malloc returning NULL
// suppose we already have a FILE pointer fp for (int ch = fgetc(fp); ch != EOF && ferror(fp) == 0; ch = fgetc(fp)) {
if (length == size) { // expand array if necessary
length += 80;
buf = realloc(buf, length);
// handle realloc failure
}
if (ch == ';') {
buf[num_chars] = '\0'; // replace delimiter by null-terminator
} else {
buf[num_chars] = ch; // else put char in buf
} }
// resize the buffer to chars read buf
= realloc(buf, num_chars);
// now comes the part where I'm quite unsure if it works/is possible
char **list = (char **)buf; // and now I should be able to handle it like a list of strings?