Hallo. Ich habe wieder ein Problem. Habe folgendes vor... //zahl1 bis zahl5 sind immer nur einstellige Ziffern (0 bis 9) unsigned char zahl1=1; unsigned char zahl2=2; unsigned char zahl3=3; unsigned char zahl4=4; unsigned char zahl5=5; //daher ist der String immer 5-stellig char ausgabe[6]; //werden nacheinander eingefügt und bilden einen String strcat(ausgabe,zahl1); strcat(ausgabe,zahl2); strcat(ausgabe,zahl3); strcat(ausgabe,zahl4); strcat(ausgabe,zahl5); strcat(ausgabe,"\0"); //aus dem String einen Long-Wert bilden unsigned long gesamt=atol(ausgabe); So klappt es aber nicht... warum ? Wie kann ich dieses Problem anderes lösen ??? Müssen die Variablen zahl1 bis zahl5 null terminiert sein ? Danke schon mal
>Wie kann ich dieses Problem anderes lösen ??? Ein C Buch kaufen. >Müssen die Variablen zahl1 bis zahl5 null terminiert sein ? Wenn es Strings wären ja. Es sind aber nur Zahlen und auch kein ASCII Code.
..kommt drauf an, was du eigentlich erreichen willst.. z.B. einen String erzeugen (alles Pseudocode): for ((i = 0; i < länge; i++)) ausgabe[i] = zahl[i] +'0'; ausgabe[länge] = 0; ..oder eine Zahl mit Basis 10: ergebnis = 0; for ((i = 0; i < länge; i++)) ausgabe *= 10; ausgabe += zahl[i]; du kannst auch den Umweg gehen, erst einen String zu erzeugen (nache Methode 1) und dann daraus eine Zahl, das macht aber noch nicht so richtig Sinn :-) Ergo nochmals die Frage: Was genau willst Du erreichen? Zum Thema 'strcat' empfehle ich die Lektüre der Manpage (behelfsweise der Doku) ★hint★
Danke Sepp. Was habe ich vor : 1. Die Variablen zahl1 bis zahl5 erhalten einen einstelligen Wert. 0-9 2. Daraus möchte ich einen String bilden und ausgeben (z.B. LCD) 3. Dann möchte ich daraus einen Long-Wert bilden und damit rechnen... Das alles ergibt vielleicht nicht den Sinn und dient zu Übungszwecken. Gruß
> 1. Die Variablen zahl1 bis zahl5 erhalten einen einstelligen Wert. 0-9 > 2. Daraus möchte ich einen String bilden und ausgeben (z.B. LCD) Ok, dann die erste Methode: ausgabe[0] = zahl1 +'0'; ausgabe[1] = zahl2 +'0'; ausgabe[2] = zahl3 +'0'; ausgabe[3] = zahl4 +'0'; ausgabe[4] = zahl5 +'0'; ausgabe[5] = 0; mach_was_mit_string(ausgabe); Falls zahl1..zahl5 in einem Array liegt, dann kannst das auch eleganter in eine Schleife packen wie oben schon angegeben (auf Indizes achten/ggf. anpassen!!) > 3. Dann möchte ich daraus einen Long-Wert bilden und damit rechnen... Da hat Deine Methode schon gepasst. Effizienter gehts aber, wenn du beides in einem Aufwasch erledigst, das könnte dann z.b. so aussehen: ergebnis = 0; for (i = 0; i < länge; i++) ausgabe[i] = zahl[i] +'0'; ergebnis *= 10; ergebnis += zahl[i]; ausgabe[länge] = 0; mach_was_mit_string(ausgabe); mach_was_mit_zahl(ergebnis); HTH
Danke Sepp. Das hat geklappt. Wobei Deine Variante mit der Schleife um einiges eleganter ist. Du hast mir sehr geholfen!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.