C: Schwierige Probleme (wahrscheinlich Pointerproblem u.a.)

apric

Erfahrenes Mitglied
Habe 2 wirklich gravierende Probleme beim Schreiben eines Programmes zum Rechnen mit sehr großen Zahlen:

Quelltext:
http://nopaste.php-q.net/98513

Zuallererst Wird die Auswahl der Rechenoperation unter Linux (gcc) einfach übersprungen.

Und zum zweiten funktioniert die Funktion factorial() (Fakultätsfunktion) überhaupt nicht, entweder Endlosschleife oder Segmentation Fault.


Hoffentlich kann mir jemand helfen, habe schon diversen Programmier-Chaträumen nachgefragt und keiner konnte mich wirklich weiterbringen.
 
moin


Zu dem überspringen:
Mach mal den fflush(stdin) direkt vor das scanf("%c", &choice).
Vielleicht hilft es ja.


mfg
umbrasaxum
 
hi,
Also das einzigste was mir aufgefallen ist, ist dass du hier:
Code:
void factorial (char *zahl1, char *result){
    char *temp = (char*) malloc (strlen (zahl1) * sizeof (char));    
    add ("1", "0", result);
    add ("0", "0", temp);
    
    for (;;) {
	    add ("1", temp, temp);
	    
	    //multiply (result, temp, result);  //HIER HAKTS !
	    //temp = result;
	    
	    printout (temp);
	
 	   if (!(strcmp(temp, zahl1))) break;
    }
    
}

fuer temp nur soviel Speicher allocierst(entschuldige diesen Ausdruck :) ), wie in Zahl1 "Ohne \0".

Desshalb kann temp nie gleich Zahl1werden, weil die Funktion Add immer das \0 an letzte Stelle anhängt.
 
Zurück