Parsen von String



  • Hi Community

    Ich wollte gerne wissen wie ich einen String den ich als char *buffer bekomme , parsen kann. Ich bekomme immmer einen String der Form: XX-XX-XXXX XX:XX:XX
    Jetzt möchte ich noch jedes einzelne Element ( also die geparsten strings ) in ints speichern , da es ja zahlen sind, z.b 12-02-1983 14:43:12.
    Ich habe hier mal ein Code beispiel, doch ich bekomme ein Segemntation Fault:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main ()
    
    {
    
    char *instring = "12-02-2009 15:42:20";
    char *date, *month, *year;
    
    date = strtok ( instring, "-" );
    month= strtok ( NULL, "-" );
    year = strtok ( NULL, "-" );
    printf ( "date = %s\nmonth = %s\nYear = %s\n",date,month,year);
    //parseint(date)->> muss man so die strings in ints casten ?
    return 0;
    }
    

    Danke im voraus !



  • month= strtok ( NULL, "-" );
    

    du versuchts einen nullptr zu parsen was nicht geht.



  • Wie kann ich denn meinen Fehler eheben , wenn ich überall instring stehen habe , also dort wo jetzt NULL ist , dann ergibt das auch einen Segmentation Fault ..



  • also ich habe einen anderen Weg gefunden wie ich so einen String parsen kann und zwar mit sscanf... nochmals Danke für eure mühe



  • dsfsdfds schrieb:

    month= strtok ( NULL, "-" );
    

    du versuchts einen nullptr zu parsen was nicht geht.

    das ist richtig so bei strtok.

    strtok verändert das erste Argument, es sollte also nicht read-only sein. Versuchs mal mit

    char instring[] = "12-02-2009 15:42:20";
    

Anmelden zum Antworten