Problem mit den Arrays.



  • Was das Programm machen muss:
    Aus dem Array wo 12.02.2012 drin ist, den Tag, den Monat und Jahr rausnehmen und packen in ein anderes Array, für Tag Monat und Jahr jewals ein Array. Und danach muss alles in integer umgewandelt werden

    Bis zum integer verläuft alles gut. Problem ist das am ende *DP, *MP & *YP Leer bleiben. string.h darf ich nicht nutzen. Ich hoffe Ihr könnt mir helfen. Vielen Dank.

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
    char DATUM[11] = "12.02.2012";
    char D[3] = "\0";
    char M[3] = "\0";
    char Y[5] = "\0";
    char *DATUMP = DATUM;
    char *DP = D;
    char *MP = M;
    char *YP = Y;
    
    int Di, Mi, Yi;
    
    while ( *DATUMP !='.')
    *DP++ = *DATUMP++;
    *DATUMP++;
    
    while ( *DATUMP !='.')
    *MP++ = *DATUMP++;
    *DATUMP++;
    
    while ( *DATUMP !='\0')
    *YP++ = *DATUMP++;
    
    *DP = atoi (Di);
    *MP = atoi (Mi);
    *YP = atoi (Yi);
    
    printf("DATUM = %s\n", DATUM); //Funktioniert
    printf("DAY = %s\n", D); //Funktioniert
    printf("MоNAT = %s\n", M); //Funktioniert
    printf("JAHR = %s\n", Y); //Funktioniert
    
    printf("DATUM = %s\n", DATUM); //Funktioniert
    printf("DAY = %s\n", DP); //Leer
    printf("MоNAT = %s\n", MP); //Leer
    printf("JAHR = %s\n", YP); //Leer
    
    printf("DATUM = %s\n", DATUM); //Funktioniert
    printf("DAY = %i\n", Di); //Kommen irg. welche Zahlen aus dem Nichts
    printf("MоNAT = %i\n", Mi); //Kommen irg. welche Zahlen aus dem Nichts
    printf("JAHR = %i\n", Yi); //Kommen irg. welche Zahlen aus dem Nichts
    
    return 0;
    }
    


  • *DP = atoi (Di);
    *MP = atoi (Mi);
    *YP = atoi (Yi);
    

    muss korrekt heißen

    Di = atoi (D);
    Mi = atoi (M);
    Yi = atoi (Y);
    
    printf("DATUM = %s\n", DATUM); //Funktioniert
    printf("DAY = %s\n", DP); //Leer  <-- korrekt, Zeiger zeigt auf '\0', also ""
    printf("MоNAT = %s\n", MP); //Leer  <-- korrekt, Zeiger zeigt auf '\0', also ""
    printf("JAHR = %s\n", YP); //Leer  <-- korrekt, Zeiger zeigt auf '\0', also ""
    


  • Was meinst du was atoi macht?

    Versuch doch mal Di = atoi(D);
    Bei dir muss doch der Compiler extrem meckern.
    Behandle Warnungen wie Fehler.

    Warum kopierst du die Zeichen überhaupt. atoi funktioniert auch mit DATUM.

    Allerdings ist strtol besser geeignet.



  • Wutz schrieb:

    *DP = atoi (Di);
    *MP = atoi (Mi);
    *YP = atoi (Yi);
    

    muss korrekt heißen

    Di = atoi (D);
    Mi = atoi (M);
    Yi = atoi (Y);
    
    printf("DATUM = %s\n", DATUM); //Funktioniert
    printf("DAY = %s\n", DP); //Leer  <-- korrekt, Zeiger zeigt auf '\0', also ""
    printf("MоNAT = %s\n", MP); //Leer  <-- korrekt, Zeiger zeigt auf '\0', also ""
    printf("JAHR = %s\n", YP); //Leer  <-- korrekt, Zeiger zeigt auf '\0', also ""
    

    Vielen Dank!
    Jetzt sehe ich es... mit Zeiger - voll vergesen, dass mann bei Gebrauch wieder zurück stellen muss.
    atoi was neues für mich, Danke. 👍
    ps: Thread wurde für mich im Auftrag eröffnet 🙂



  • DirkB schrieb:

    Was meinst du was atoi macht?

    Versuch doch mal Di = atoi(D);
    Bei dir muss doch der Compiler extrem meckern.
    Behandle Warnungen wie Fehler.

    Warum kopierst du die Zeichen überhaupt. atoi funktioniert auch mit DATUM.

    Allerdings ist strtol besser geeignet.

    Vielen Dank.
    Tja, entweder sehe ich falsch, oder ist mein Compiller doof.
    strtol - dürfen wir leider nicht verwenden. 🙂


Anmelden zum Antworten