2016-06-02 10 views
-2

Ich habe mir in den Schulferien C selbst beigebracht und kürzlich versucht, ein einfaches Taschenrechnerprogramm zu schreiben, das zwei Ganzzahlen aufnehmen und eine von vier Operationen ausführen soll (+ - * /) , aber immer, wenn die erste Variable zugewiesen ist, bekomme ich eine Segmentierungsfehler/Kern-Dump-Fehlermeldung. Ich weiß, dass dies mit der Speicherzuweisung zu tun hat, und ich habe versucht, Zeiger und malloc zu verwenden, obwohl ich vermute, dass ich es falsch mache.Segmentierungsfehler in einem einfachen Programm erhalten

#include <stdio.h> 
#include <string.h> 
#include <stdlib.h> 

int calculate(int numberOne, int numberTwo, int operator); 

int main(){ 

//Declaring Variables 
int numberOne, numberTwo, total, operator; 
int *one, *two, *tot, *op; 


//Assigning Variables 
printf("Integer 1: "); 
scanf("%d", numberOne); 
printf("\nOperator 1[+] 2[-] 3[*] 4[/] : "); 
scanf("%d", operator); 
printf("Integer 2: "); 
scanf("\n%d", numberTwo); 


//Output Calculatoin Through Function 
printf("Calculation Complete: %d is the answer", calculate(numberOne, numberTwo, operator)); 
} 

int calculate(int numberOne, int numberTwo, int operator) { 

int total = 0; 
do{ 
    switch(operator){ 

     case 1: 
      total = numberOne + numberTwo; 
      break; 

     case 2: 
      total = numberOne - numberTwo; 
      break; 

     case 3: 
      total = numberOne*numberTwo; 
      break; 

     case 4: 
      total = numberOne/numberTwo; 
      break;   

     default: 
      printf("Error, Invalid Operator, Please Enter A New One: "); 
      scanf("%d", operator); 
     } 
}while(total ==0); 

return total; 
} 
+0

Cheers Leute, es ist mir völlig entfallen, dass ich die Adresse und nicht den Wert übergeben musste –

+0

Wie immer, bitte ** Compiler Warnungen ** aktivieren, die (MSVC) * gegeben hätte "C4700 Warnung: nicht initialisierte lokale Variable" numberOne "benutzt" *. –

Antwort

1

Sie benötigen

scanf("%d", numberOne); 

zu

scanf("%d", &numberOne); //%d expects a pointer to int argument 

und ebenfalls zu ändern.

1
scanf("%d", numberOne); 
     ^%d expects int * not int 

So passieren Adresse int Variable in allen scanf Aussagen.

Verwandte Themen