nicht nachvollziehbarer Programmfehler
-
hiho, folgendes kleines Programm stürzt mit der Fehlermeldung "Fehler in Anwendung" ab, und mir ist nicht ersichtlich, warum
Wenn der ein oder andere mal nen kurzen Blick drauf werfen könnte, wäre ich sehr dankbar
#include <iostream.h> #include <stdio.h> #include <stdlib.h> #include <string.h> void main() { // initialisieren der Variablen char eingabe[3]; int ausgabe[3]; int leange = 0; int menu = 0; int i = 0; char temp[1]; do { cout << "\nEingabe 1:\tZahleingabe\nEingabe 2:\tProgrammende.\nEingabe: "; do { cout<<"gibsch was ein ne: "<<endl; cin >> menu; }while (!(menu == 1 || menu == 2)); if (menu == 1) { // Eingeben der Werte cout << "Bitte geben sie jetzt eine maximal dreistellige zahl ein.\nEs werden nur die ersten drei ziffern beachtet.\nEingabe: "; cin.get(eingabe, 4); leange = strlen ( eingabe ); do { temp[0]=eingabe[i]; ausgabe[i]= atoi(temp); if(ausgabe[i]==0) {cout<<"Fehler"<<endl;} i++; } while (!(i == leange)); // auswertung cout << "Intzahl: "<<ausgabe<<endl; } if (menu == 2) { cout << "ende" << endl; } }while(!(menu == 2)); }
-
char eingabe[3]; cin.get(eingabe, 4);
du reservierst 3 bits im stack für eingabe, wovon schonmal eins für /0 wegfällt, und liest dann 4 bits ein. hmm fällt dir was auf?
-
hi, thx für die schnelle antwort
also so wie ich das sehe, werden 3 zeichen eingelesen, und das vierte dient dem \0 abschluss.
soweit man das auswahlmenü wegläßt, tut das programm ja auch wunderbar
(also der teil:#include <iostream.h> #include <stdio.h> #include <stdlib.h> #include <string.h> void main() { // initialisieren der Variablen char eingabe[3]; int ausgabe[3]; int leange = 0; int i = 0; char temp[1]; // Eingeben der Werte cout << "Bitte geben sie jetzt eine maximal dreistellige zahl ein.\nEs werden nur die ersten drei ziffern beachtet.\nEingabe: "; cin.get(eingabe, 4); leange = strlen ( eingabe ); do { temp[0]=eingabe[i]; ausgabe[i]= atoi(temp); if(ausgabe[i]==0) {cout<<"Fehler"<<endl;} i++; } while (!(i == leange)); // auswertung cout << "Intzahl: "<<ausgabe<<endl; }
-
otze schrieb:
char eingabe[3]; cin.get(eingabe, 4);
du reservierst 3 bits im stack für eingabe, wovon schonmal eins für /0 wegfällt, und liest dann 4 bits ein. hmm fällt dir was auf?
Du meinst Bytes ;).
mfg
v R