2016-08-14 8 views
-3

私は、例えば1 + 2のような小さなプログラムを作ろうとしています。出力はそれらの2つの数値の和でなければなりません。しかし、それは墜落し続けるか、何もしません。どうしたの?私の小さなプログラムがクラッシュするのはなぜですか?

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

int main(){ 

char *op; 
char *first; 
char *second; 

printf("Enter operation\n"); 
scanf(" %s%s%s", &first, &op, &second); 

int num1; 
int num2; 
int num3; 
int add; 

num1 = atoi(first); 
num2 = atoi(op); 
num3 = atoi(second); 

add = num1 + num3; 


printf("Sum = %i\n",add); 

return 0; 
} 
+0

ポストコンパイル出力。 Read:http://www.cplusplus.com/reference/cstdio/scanf/そしてC – Inline

+0

に関する良い本が[this](http://ideone.com/RKj9B1)のように修正されました。 – BLUEPIXY

答えて

2

atoiconst char *なくcharとして引数を取ります。変数のタイプはcharで、atoiは文字列をintに変換します。

また、あなたは未定義behavourになりscanf%d、引数としてchar *を渡します。

scanf(" %d%d%d", &first, &op, &second) 
     ^^^^^^ expects int * not char * 
関連する問題