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 werdenBis 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.