gpt4 book ai didi

c - 第二个整数计为 0

转载 作者:太空宇宙 更新时间:2023-11-04 07:44:08 24 4
gpt4 key购买 nike

我刚开始学习C,但我已经遇到了一个问题。我想写一个简单的计算器,但是-我不知道为什么-第二个整数总是算作 0。我只是找不到可能是什么问题。

这是我的代码:

int main(){

int a, b;
char c;

printf("Enter 2 numbers:\n");
scanf("%d %d", &a, &b);
printf("Enter an operator:\n");
scanf("%s", &c);

switch(c){
case '+':
printf("%d\n", a+b);
break;
case '-':
printf("%d\n", a-b);
break;
case '*':
printf("%d\n", a*b);
break;
case '/':
printf("%d\n", a/b);
break;
}
}

感谢您的帮助:)

最佳答案

您正在将字符串读入单个字符:%s 将读取,f.ex。 +\nc 从而覆盖你的堆栈。

您还应该检查 scanf() 的返回值是否有错误,即如果用户输入了不正确的数据并且解析器失败。

通过这些更改,代码按描述工作:

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

int main(void) {
int a, b;
char c[20];
int result;

printf("Enter 2 numbers:\n");
result = scanf("%d %d", &a, &b);
if (result != 2) {
perror("integer input failed");
return(1);
}
printf("Enter an operator:\n");
result = scanf("%s", c);
if (result != 1) {
perror("character input failed");
return(1);
}

/* just showing that everything was recognized correctly... */
printf("'%d' '%d' '%s'\n", a, b, c);

switch(c[0]){
...

运行示例:

$ gcc -Wall -Werror -o dummy dummy.c
$ ./dummy
Enter 2 numbers:
1 2
Enter an operator:
+
'1' '2' '+'
3
$

关于c - 第二个整数计为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58250589/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com