string->int
-
Hi, ich würde gerne ein Char oder string in einen integer umwandeln und mach das so :
char c[2]=" "; printf("Bitte Zeichen eingeben (a-z) (A-Z): "); scanf("%s",c); int d; d = atoi(c); printf("%s wird zu %d",c,d);
Warum bekomme ich egal was für ein char ich eingebe, immer eine 0 zurück ??
-
atoi() wandelt auf textueller Ebene um - das nimmt eine (als String gespeicherte) Zahl wie "1234" und rechnet die um in einen int-Wert. Mit Buchstaben kann die Funktion nicht sehr viel anfangen. Was erwartest du denn als Ausgabe?
PS: Wenn du sowieso nur ein Zeichen entgegennehmen willst, solltest du lieber mit einem char arbeiten als mit einem Mini-Array.
-
Achso, ich dachte atoi wandelt mir ein Buchstaben als Zahl um. Gibts ne Funktion die das macht was ich will ? Also char/String->int umwandeln ?
Hmmm ob ichs jetzt so mache :
char c[2]=" "; printf("Bitte Zeichen eingeben (a-z) (A-Z): "); scanf("%s",c);
oder so:
char c[2]=" "; printf("Bitte Zeichen eingeben (a-z) (A-Z): "); scanf("%c",c);
Ist doch grade egal, oder wie würdest du das machen ?
-
toxor schrieb:
Ist doch grade egal...?
nicht ganz. beim ersten liest du einen string ein (einschliesslich einer 0 am ende) und wenn zu wenig speicher da ist (c zu wenig zeichen fassen kann), dann gibts 'nen overflow und das programm macht komische dinge. beim zweiten code wird nur das erste zeichen verändert.
-
Es wandelt Zahlen von Textform in integer um - was soll denn deiner Meinung nach für ein Wert herauskommen, wenn du 'a' eingibst?
PS: Wenn du nur ein einzelnes Zeichen brauchst, nimm auch eine char-Variable:
char c; printf("Bitte Zeichen eingeben (a-z) (A-Z): "); scanf("%c",&c);
-
@erklär-freak : ja ich weiß, normal würde ich auch fgets + sscanf nehmen. Soll hier mal ne Ausnahme sein
@Stoll : wenn ich a eingebe will ich einen Wert bekommen den ich mit einem anderen Wert verarbeiten kann , zb so :
(c & 32) ? ausgabe(0) : ausgabe(1);
Solange c ein char ist, gibt mir der Compiler an, das er das nicht macht mit einem char ! Deswegen würde ich gerne umwandeln, von char->int , ist das so abwägig ?
Wenn ich das so schreib :
char c; printf("Bitte Zeichen eingeben (a-z) (A-Z): "); scanf("%c",&c);
sagt mir der Compiler das ich c nicht undefiniert benutzen darf
-
toxor schrieb:
sagt mir der Compiler das ich c nicht undefiniert benutzen darf
die adresse von einer (auch uninitialisierten) variablen zu holen, sollte eigentlich kein anlass zum meckern geben. welcher compiler spinnt dermassen ab?
-
Mit diesen "sagt mir der Compiler..." Aussagen kann ich jetzt nicht besonders viel anfangen - zeig mal die exakten Meldungen des Compilers.
-
Visual Studio 2005 !
Run-Time Check Failure #3 - The variable 'c' is being used without being defined.
EDIT : Opps , AdressOperator vor c vergessen xD
Ok Thema hat sich wohl erledigt, jetzt wo es sich nur noch um ein einzelnes zeichen handelt gehts...ich verstehs nicht, aber ok