Formatiertes Einlesen mit zwei Syntaxregeln

So, mal selbst kompiliert, was ich da für Unsinn produziert hab:D

3 Fehler:

Bei der for-Schleife (die bytes zählt) fehlt beim letzten bytes das s.

Vor der selben Schleife muss i auf 0 gesetzt werden
(sollte ja beim Arrayindex 0 beginnen, vorher hatte es überhaupt keinen sinnvollen Wert).

C++:
i = 0;
for(--bytes; bytes >= 0; bytes--)

Und das Hauptproblem:
Das ; bei meinen #define ist sehr daneben.
Also nicht
C++:
#define MAX_MB 8;
sondern
C++:
#define MAX_MB 8
Vorher wurde MAX_MB mit 8; ersetzt, deshalb die Meldungen...
es soll ja nur 8 sein.
 
Noch eine Sache die ich ergänzt habe:
bytes um einen erhöht und am Ende
Code:
daten[i]='\0';
damit nicht unnötiger Rest gelesen wird.

//edit:
Code:
void transformString(char *input){
    int i=-1,o1=-1,o2=-1;
    char c='0',
    *tmp=strtok(input, ";");      //erstes "Teilen" des Strings

    while(tmp){
	    if ((sscanf(input, "%i:%c", &i, &c) == 2) && (c>=65) && (c<=90) && (i>0) && (i<10000))
            printf("Nummer %i mit Label %c wurde definiert\n", i, c);
        else if((sscanf(input, "%i->%i", &o1, &o2) == 2) && (o1>0) && (o1<10000) && (o2>0) && (o2<10000))
            printf("%i zeigt auf %i\n", o1, o2);
        //else
            //return NULL;
 	tmp = strtok(NULL, ";");    //fortführendes Teilen des Strings
    }
}
Komischerweise tritt immer die erste if-Bedingung in der while-Schleife ein (auch wenn die Zuordnung der Werte auch nicht stimmt). der String sieht folgendermaßen aus:
Code:
1:A;2:B;3:C;4:E;5:F;6:D;7:E;8:F;9:D;1->2;1->3;1->4;1->5;2->6;2->7;3->8;3->9;

Die Ausgabe gibt insgesamt 17mal (Anzahl stimmt schonmal :D) aus: "Nummer 1 mit Label A definiert"
 
Zuletzt bearbeitet:
Stimmt danke xD Manchmal sieht man den Wald vor lauter Bäumen nicht...
Das *tmp stimmt aber so (ist die variablendeklaration).
 
Hab übersehen, dass beim char c darüber ein , statt ; war
und gedacht, tmp ist eine globale Variable.
Mein Fehler.
 
Zurück