为什么我的小程序崩溃了?
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 *
我正在尝试制作一个小程序,您可以在其中输入例如 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 *