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

Why is my small program crashing?

我正在尝试制作一个小程序,您可以在其中输入例如 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;
}

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

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

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