Konsole bleibt bei Ausgabe hängen

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
DerSamu
Beiträge: 35
Registriert: Sa Dez 23, 2017 3:15 pm

Konsole bleibt bei Ausgabe hängen

Beitrag von DerSamu » Sa Okt 06, 2018 10:00 am

Hallo! Ich programmiere in der Schule jetzt seit cirka einer Woche C und wir haben eine Aufgabe bekommen, in der wir mit "großen Integern", also Zahlen die eigentlich außerhalb des Integerbereichs sind, rechnen müssen. Wir müssen dazu die Stringeingabe Zahl für Zahl in ein Int-Array packen, welcher höchstens 80 stellen haben kann. Ich und ein Freund haben uns gemeinsam an die Aufgabe gesetzt und haben jetzt diese eine Methode ziemlich gleich, allerdings hängt sich bei mir die Konsole bei der Ausgabe auf. Nach der Eingabe kann ich so oft Enter drücken wie ich will, das Programm geht erst weiter, wenn ich eine beliebige Taste + Enter drücke. Hätte jemand eine Idee an was das liegen könnte?
Hier mein Code:

Code: Alles auswählen

int main(int argc, char *argv[])
{
	struct BigInt firstNumber;		//Das struct bigInt für die erste Zahl
	char userInput[2];			//der userinput
	printf("Pyramid of numbers\n\n");
	printf("Please enter a number: " );
	scanf("%s\n",userInput );		//nach diesem scanf hängt sich das Programm anscheinend auf
	printf("a\na\na\na\n");			//Dieses printf existiert nur zum Testen, an welcher Stelle sich das Programm aufhängt.
	int len=strlen(userInput);
	len=strtobig_int(userInput, len, &firstNumber);	//Aufruf der Funktion mit der ein string zu einem BigInt umgewandelt werden soll
	printf("End\n");
	return 0;
}

int strtobig_int(const char *str, int len, struct BigInt *big_int){
	int counter=0;
	for (size_t i = 0; i < len; i++) {
		if(str[i]>='0'&&str[i]<='9'){
			int temp=str[i]-'0';
			big_int -> the_int[i] = temp; 
			printf("%d\n",big_int->the_int[i]); //Dieses printf existiert nur zum Testen, an welcher Stelle sich das Programm aufhängt.
			counter++;	 
		}
	}
	return counter;
}
Hier die Konsolenausgabe:
Screenshot from 2018-10-06 10-41-05.png
Ich hoffe mir kann jemand weiterhelfen und sage im voraus schonmal danke.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
lernender Programmierer, hauptsächlich C# und Java

DerSamu
Beiträge: 35
Registriert: Sa Dez 23, 2017 3:15 pm

Re: Konsole bleibt bei Ausgabe hängen

Beitrag von DerSamu » Sa Okt 06, 2018 10:03 am

Danke habe den Fehler gerade selber gefunden. Bei diesem scanf() hatte ich scanf("%s\n",userInput); obwohl der Zeilenumbruch nicht dahingehört.
lernender Programmierer, hauptsächlich C# und Java

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8485
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Konsole bleibt bei Ausgabe hängen

Beitrag von Xin » Sa Okt 06, 2018 10:18 am

Und da wäre noch etwas: Dein Array User-Input ist zwei Zeichen groß. Du gibst aber vier Zeichen ein (+newline + Nullbyte). Das passt nicht. Du schreibst also in den Stack und das knallt anschließend.

Siehe scanf.

Wenn Du nur eine Eingabe hast, empfehle ich Dir Aufruf-Parameter zu benutzen.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten