String Teilen
-
Hey, ich möchte einen String teilen also wenn er die Länge n hat in genau n Teile zerlegen. Ich porbiere das schon seit Tagen aber ich bekomme das nicht hin.
Kennt jmd. ein Trick wie man das machen kann?
Beispiel "a2b5"
Aufteilen in string1 = a string2 = 2 oder in einen Array[0] = a und Array[1] = 2
-
Der String ist ein Array aus Zeichen mit einer abschließenden '\0'.
Wenn du nur ein Zeichen möchtest, dann nimm auch das eine Zeichen und kein String.
Strings und Zeichen werden in C sehr unterschiedlich behandelt.
int main() { char text[] = "a2b5"; // ein String int i; for(i=0; text[i] != '\0'; ++i) printf("Zeichen an Stelle %d = %c\n", i, text[i] return 0; }
ungetestet
-
da fehlt );
und die includes :p
-
Das heißt wenn ich
#include <stdio.h> int main(void) { char text[] = "initialisiert"; // Ein String initialisiere. scanf("%s", text); // Ich gebe beispieleweise "abc" ein. printf("%c", text[0]); // Dann wird hier nur a ausgegeben? }
Stimmt das so?
Ich seh grad meins is mist deins funzt
Ich glaube aber jetzt müsste es gehen
Wenn ich jedoch mit den Werten rechnen will wie kann ich C klarmachen das ich beim Wert 2 nicht den ASCII Wert "50" haben will sondern die 2???
Also in der ausgabe funktioniert das hier aber es funtkioniert nicht
printf("%c", (int)text); //das klappt int ergebnis = (int)text[0] + (int)text[1];// hier werden die ASCII Wert benutzt
-
Mit %c gibst du ja auch Zeichen aus. Das muss nicht unbedingt ASCII sein.
Wenn du Zahlen haben willst, musst du die '0' abziehen.
int ergebnis = (text[0] - '0') + (text[1] - '0');
^Die Klammern () sind nur zur besseren Lesbarkeit^
Beachte die ''.Nur bringt das wenig bei Buchstaben wie aus deinem Beispiel ("a2b5")
-
Nein bei Buchstaben ist das ja gut so, aber die Zahlen brauch ich so wie sie sind.
Okay vielen Dank es funktioniert! Wo wurde jetzt die Null abgezogen, ich möchte es ganz genau verstehen?
-
(ASCII)
'0' == 48
'1' == 49
'2' == 50
'3' == 51
'4' == 52
'5' == 53
'6' == 54
'7' == 55
'8' == 56
'9' == 57daraus folgt nach Adam Riese und Eva Zwerg:
'0' - '0' = 0
'1' - '0' = 1
'2' - '0' = 2
...cheers, Swordfish
-
Check ich nich wo is z.B. bei 49 die '0'???
Wird bei einer Operation sofort ASCII verlassen könnte man auch + NUll schreiben?
-
'0' ist das Zeichen das die 0 darstellt. Das Zeichen hat bein ASCII den Wert 48.
0 ist der Zahlenwert 0.49 ist der Wert von der '1' im ASCII.
Wenn du aus der '1' eine 1 machen möchtest, musst du 48 abziehen oder eben '0'.Das mit der '0' hat den Vorteil, dass es auch funktioniert wenn die Zeichendarstellung nicht auf ASCII beruht.
-
Achso okay danke habs verstanden!
Vielen dank für deine Hilfe