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


Anmelden zum Antworten