string feld auslesen und auf integer prüfen klappt nicht
-
hi
das das c ist ist mir schon klar nur leider ist das ein c++ buch und die einführung also grundlagen etc. sind leider in C.
@borg das ist ja der witz an digit das er in einem string guck ob das zeichen eine zahl ist. das funktioniert auch bis die zahl zu ende ist dann liest er irgendetwas anderes aus blos eben keine zahl so das der return wert dann 2 ist da er in die else anweisung springt.
es könnte auch an der while schleifen bedingung liegen das er nicht '\n' das erkennt wenn die zahl zuende ist. was könnte ich als bedingung für die while schleife nehmen das er nach der letzten zahl abbricht.
mfg david
-
wenn du es so machen willst musst du dein feld vor dem einlesen mit lauter '\n' füllen. sonst findet er halt keins und macht immer weiter :p
imo ist das endezeichen bei strings aber 0 (nicht '0')also wie wärs mit:
... for( int i=0; i<=9; i++ ) a[i]=0; ... if( a[i] != 0 ) ...
-
Hi,
ich wollte dich nicht perönlich angreifen, aber nochmal, was ist das für ein Buch?
Meiner Meinung nach ist es verkehrt erst c zu lernen und dann c++.
Die Schwächen ziehen sich wie ein roter faden durch deine Programme und das
es zu Problemen kommt, siehst Du ja bereits jetzt schon.Nimm ein aktuelles C++ Buch und lerne daran, oder versuch mal das Tutorial von
Volkard. Die Url dazu steht hier irgendwo im Forum (such mal danach).Ich könnte natürlich dein Programm posten, damit es funktioniert, aber
das ist glaube ich nicht der Sinn der Sache, wenn ich dir gleich Streams
und Bedingungen um die Ohren haue, die Du wahrscheinlich noch nicht
verstehen wirst.Also, Kopf hoch und weiter...
Nimm erst einmal das berühmte 'Hello World!' und alles wird gut.
Gruss
EarlyBird
-
hmm das buch ist eigentlich sehr aktuell (da hab ich extra drauf geachtet) das ist ausserdem schon das zweite buch was ich mir zu dem thema gekauft habe das erste war noch beschissener da wurde einen irgendwelcher code um die ohren gehauen und nicht erklärt was einzelne befehle und funktionionen bedeuten.
da buch ist hier bedeutend besser und am ende jedes kapitels sind aufgaben die man zur übung lösen kann das finde ich ganz gut.
ich würde ungern wieder von vorn anfangen nur wegen dem kleinen problem
also scheinbar steht dort kein \0 am ende des strings da mus ja dann ein anderes zeichen stehen oder täusch ich mich da, wenn ja was könnte das für ein zeichen sein? so das ich das dann in die while schleifen bedingung einbauen kann.
@borg mit der for schleife isses nicht so prickelnd er soll ja nur die tatsächlichen zeichen die eingegeben wurden prüfen ob sie zahlen sind wenn ich das mit der for schleife mache findet er ja keine zahl mehr wenn z.b. die eingegebene zahl nur 4 stellen hat. alles klar was ich meine?
mfg david
ps: ausserdem hab ich das buch bald durch
und will es jetzt durchziehen
-
es sind keine "kleinen" probleme, der inhalt ist schlicht und ergreifend falsch.
lass mich raten, ein Markt und Technik buch?
-
nein ein Franzis buch
-
Okay, ich geb mich geschlagen...
ich habe mal deinen code etwas verändert, sodass es immer noch c ist und kein
c++.Aber Du möchtest ja gerne eine Lösung.
int isinteger (char *a); int _tmain(int argc, _TCHAR* argv[]) { char a[10]=""; int zahl; printf("Bitte geben Sie eine Zahl ein: "); gets(a); zahl=isinteger(a); printf("\n%d",zahl); return 0; } int isinteger (char *a) { int r=0; while (*a) { if ( isdigit(*a) ) { printf("%c\n",*a); r = r * 10 + (*a - '0'); ++a; } } return r; }
Dir ist hoffentlich klar, das du einer BufferOverflow Attacke nicht gewappnet bist
Gruss
EarlyBird
-
hmmm ok ich geb mich auch geschlagen
ich werd die 2 kapitel noch durharbeiten und kauf mir dann das dritte buch was hoffentlich diesmal was gescheites ist
irgendwelche vorschläge?
mfg david
-
Ist das Ergebnis wenigstens so wie du es wolltest ?
Ich empfehle mal diese zwei Bücher, die man evtl. auch günstig gebraucht bekommt:
http://www.amazon.de/exec/obidos/ASIN/3898421716/qid%3D1102282177/028-6820826-8315717
und:
http://www.amazon.de/exec/obidos/ASIN/3898642216/qid%3D1102282291/028-6820826-8315717
-
ok danke habe jetz mal das erste buch da bestellt mal sehen ob das was gescheites ist. danke für die mühe
mfg david