7 Stimmen

Wie man einen String in ein Array von Integer in C tokenisiert?

Hat jemand etwas über das Lesen einer fortlaufenden Nummer aus einer Textdatei pro Zeile und das Parsen in ein Array in C?

Was ich in einer Datei habe:

12 3 45 6 7 8
3 5 6 7
7 0 -1 4 5

Was ich in meinem Programm haben möchte:

array1[] = {12, 3, 45, 6, 7, 8};
array2[] = {3, 5, 6, 7};
array3[] = {7, 0, -1, 4, 5};

Ich habe bereits verschiedene Möglichkeiten ausprobiert, um es zu lesen, aber das eigentliche Problem tritt nur dann auf, wenn ich es pro Zeile tokenisieren möchte. Danke.

0 Stimmen

Danke für alles, aber jetzt erkenne ich, dass das Problem darin besteht, zu tokenisieren.

0voto

Christoph Punkte 157217

Verwenden Sie strtol(), um jede Zeile zu analysieren:

#include 
#include 
#include 

int main(void)
{
    static char buffer[1024];
    static long values[256];

    while(fgets(buffer, sizeof buffer, stdin))
    {
        char *current = buffer;
        size_t i = 0;
        while(*current && *current != '\n' &&
            i < sizeof values / sizeof *values)
        {
            char *tail = NULL;
            errno = 0;
            values[i] = strtol(current, &tail, 0);

            if(errno || tail == current)
            {
                fprintf(stderr, "Fehler beim Parsen von %s\n", current);
                break;
            }

            ++i, current = tail;
        }

        // Werte verarbeiten
        printf("Gelesene %i Werte\n", i);
    }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X