为什么我的小程序会崩溃?

时间:2016-08-14 05:34:33

标签: c char atoi

我正在尝试创建一个小程序,例如输入1 + 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;
}

1 个答案:

答案 0 :(得分:2)

atoi将参数视为const char *而不是char。您的变量属于char类型,而atoi将字符串转换为int类型。

此外,您将char *作为参数传递给%d中的scanf,这会导致未定义的行为。

scanf(" %d%d%d", &first, &op, &second)
        ^^^^^^ expects int * not char *