Zeichenkette in Integer
-
#include <stdio.h> #include <stdlib.h> #include <string.h> Hallo Ihr Lieben, das folgende Programm soll eine Zeichenkette z.B.: ( 4,7,7,1,\0 ) in einen integer umwandeln = 4771 Ich finde den Fehler & zusätzliche Denkfehler einfach nicht. Wäre froh um jeden Tip. int Zeichenket ( char Umwandeln[] ) { int i; int g; int b = 1; int c = 0; for(i = strlen(Umwandeln-1); Umwandeln[0]; i--) { g = Umwandeln[i]; g = g * b; b = b * 10; c = c + g; } return c; } int main () { char Zeichen[100]; printf("Geben Sie Ihre Zeichenkette ein:\n"); scanf("%s", &Zeichen); printf("Ihre Zeichenkette als Integer: %d", Zeichenket(Zeichen)); system ("Pause"); return 0; }
-
int i;
char meyer[] = "4711";
i = atoi(meyer); // und du hast deinen int.
-
achso ich darf die funktion atoi nicht verwenden
-
Du solltest erstmal dein Array von Zeichen in ein Array von Zahlen umwandeln.
-
GustavGans schrieb:
achso ich darf die funktion atoi nicht verwenden
zahl = 0;
zahl = zahl * 10 + erstes_zeichen -'0';
zahl = zahl * 10 + zweites_zeichen -'0';
zahl = zahl * 10 + drittes_zeichen -'0';
... usw...
-
#include <stdio.h> int convertToInt(char *str) { int ret = 0, sign = 1; if (*str == '-' || *str == '+') { if (str == '-') { sign = -1; } *str++; } while (*str) { ret = ret * 10 + (*str) - '0'; *str++; } return sign * ret; } int main() { char test[] = "-4500"; printf("%i", convertToInt(test)); return 0; }
-
knivil schrieb:
Du solltest erstmal dein Array von Zeichen in ein Array von Zahlen umwandeln.
Zeichen (char) sind schon Zahlen (int). Was soll er da umwandeln?
-
berniebutt schrieb:
knivil schrieb:
Du solltest erstmal dein Array von Zeichen in ein Array von Zahlen umwandeln.
Zeichen (char) sind schon Zahlen (int). Was soll er da umwandeln?
gemeint war doch sowas oder?
1 = '1' - '0'
-
Nein, das war nicht gemeint!
char string[]="4513"; int i,len,ichar; len = strlen(string); for(i=0;i<len;i++) ichar=string[i];
-
berniebutt schrieb:
Nein, das war nicht gemeint!
Doch war es! Vielleicht waere Ziffer ein besserer Ausdruck. Und nein: ein char ist kein int, short oder byte.
-
knivil schrieb:
Und nein: ein char ist kein int, short oder byte.
Drücken wir es richtig aus: Ein char ist ein(er von vielen) Integertyp. Und ein char ist sowas von ein byte dass es viel bytiger gar nicht mehr geht
-
ein char ist ein byte gross.
-
player4245 schrieb:
ein char ist ein byte gross.
leider ist 'byte' keine absolute grössenangabe.
-
;fricky schrieb:
player4245 schrieb:
ein char ist ein byte gross.
leider ist 'byte' keine absolute grössenangabe.
Ich hab an dieser Stelle ein Déjà-vu
-
Das alles wollte der Fragesteller gar nicht wissen. Er hat eine Characterstring und will daraus eine Integerzahl machen. Jedes Character ist eine Integerzahl von 0 bis 255 (ASCCI-Zeichensatz). Daraus kann man auch die Ziffern 0 bis 9 auslesen. Der Rest ist seine Übungsaufgabe.
Ein 'byte' ist eine absolute Grösse, nämlich 8 aufeinander folgende 'bits', womit Zahlen von 0 bis 255 darstellbar sind. Wie nun die in C vorhandenen Datentypen in bytes dargestellt werden, ist nicht genormt, also compilerabhängig.
-
Ist 1 Meter gleich 1 Sekunde. Nein! Was in der Physik die Einheiten sind, ist beim Programmieren der Datentyp. An dem Datentyp ist eine gewisse Interpretation gebunden. Oder ist 01101111 ein char?
-
knivil schrieb:
Oder ist 01101111 ein char?
ja, ein kleines o
-
Ein 'byte' ist eine absolute Grösse, nämlich 8 aufeinander folgende 'bits', womit Zahlen von 0 bis 255 darstellbar sind.
Nö. Können auch 20 oder 10000 Bits sein.
-
Genmutant schrieb:
Ein 'byte' ist eine absolute Grösse, nämlich 8 aufeinander folgende 'bits', womit Zahlen von 0 bis 255 darstellbar sind.
Nö. Können auch 20 oder 10000 Bits sein.
aber nicht weniger als 5 *fg*
-
ich korrigiere meine Aussage: ein char ist 8-Bit gross.
Es nervt mich, dass in diesem Forum nur Erbsenspalter verkehren
-
player4245 schrieb:
Es nervt mich, dass in diesem Forum nur Erbsenspalter verkehren
Wäre es dir lieber wenn nur Leute mit x86-Scheuklappen unterwegs wären?