我用的vs2017,scanf_()函数出错了,哪位大佬知道怎么回事啊?
#include<stdio.h>int add(int, int);
int sub(int, int);
int *pus(char);
int main()
{
int num1, num2;
char op;
int (*p)(int num1, int num2);
printf("请输入一个式子,如: ( a+b )\n");
scanf_s("%d %c%d", &num1, &op, &num2);
p = pus(op);
printf("%d %c %d = %d\n", num1, op, num2, p(num1, num2));
system("pause");
}
int add(int num1, int num2)
{
return num1+num2;
}
int sub(int num1, int num2)
{
return num1 - num2;
}
int * pus(char op)
{
switch (op)
{
case '+':return add;
case '-':return sub;
}
}
scanf("%d %c %d", ...); 空格
switch,case 后面加 break 本帖最后由 无符号整形 于 2018-8-15 18:47 编辑
1.在文件头定义#define _CRT_SECURE_NO_WARNINGS
2.使用scanf_s claws0n 发表于 2018-8-15 18:44
scanf("%d %c %d", ...); 空格
switch,case 后面加 break
加空格没用,它说写入位置 0x0113133E 时发生访问冲突 无符号整形 发表于 2018-8-15 18:45
1.在文件头定义#define _CRT_SECURE_NO_WARNINGS
2.使用scanf_s
什么意思啊?初学萌新求大佬解释{:5_96:} 本帖最后由 无符号整形 于 2018-8-15 19:39 编辑
Jacob01 发表于 2018-8-15 18:50
什么意思啊?初学萌新求大佬解释
见12楼 Jacob01 发表于 2018-8-15 18:49
加空格没用,它说写入位置 0x0113133E 时发生访问冲突
......以后给上报错的资料吧~
但是我给你的建议还是补上。
不需要 int *pus(char) 直接并到 main() ,用 switch(op)就好 无符号整形 发表于 2018-8-15 18:45
1.在文件头定义#define _CRT_SECURE_NO_WARNINGS
2.使用scanf_s
不是这个整型吗 ZLSTJ 发表于 2018-8-15 19:03
不是这个整型吗
??? claws0n 发表于 2018-8-15 18:59
......以后给上报错的资料吧~
但是我给你的建议还是补上。
我的这个写法只是我看小甲鱼视频的时候打的,scanf_s("%d%c%d",&num1,&op, &num2);这个语句不能执行,我输入了,它显示访问冲突 无符号整形 发表于 2018-8-15 18:54
好吧……当我没说
我还以为是scanf_s()的问题
应该是因为函数指针的问题,pus返回类型有问题,应该返回 ...
只是输入问题,我用这个都不行
#include<stdio.h>
int main()
{
int a, b;
char c;
scanf_s("%d%c%d", &a, &c, &b);
system("pause");
}
Jacob01 发表于 2018-8-15 19:20
只是输入问题,我用这个都不行
#include
先printf三个变量内容试试?
抱歉,我还以为你函数返回的函数返回值不对 Jacob01 发表于 2018-8-15 19:20
只是输入问题,我用这个都不行
#include
#include<stdio.h>
int add(int, int);
int sub(int, int);
int calc(int , int , char);
int main()
{
int num1, num2;
char op;
printf("请输入一个式子,如: a+b\n");
scanf("%d %c %d", &num1, &op, &num2);//多重输入,建议有空格
int p = calc(num1, num2, op);
printf("%d %c %d = %d\n", num1, op, num2, p);
system("pause");// 你用 dev c++ ? 在工具设定之后就不用写这一句了
return 0;//请加
}
int add(int num1, int num2)
{
return num1 + num2;
}
int sub(int num1, int num2)
{
return num1 - num2;
}
int calc(int num1, int num2, char op)
{
switch (op)
{
case '+':return add(num1,num2);break;
case '-':return sub(num1,num2);break;
}
} Jacob01 发表于 2018-8-15 19:20
只是输入问题,我用这个都不行
#include
指针版本
#include<stdio.h>
int add(int *, int *);
int sub(int *, int *);
int calc(int *, int *, char *);
int main()
{
int num1, num2;
char op;
printf("请输入一个式子,如: a+b\n");
scanf("%d %c %d", &num1, &op, &num2);
int p = calc(&num1, &num2, &op);
printf("%d %c %d = %d\n", num1, op, num2, p);
// system("pause");
return 0;
}
int add(int *num1, int *num2)
{
return *num1 + *num2;
}
int sub(int *num1, int *num2)
{
return *num1 - *num2;
}
int calc(int *num1, int *num2, char *op)
{
switch (*op)
{
case '+':return add(num1,num2);break;
case '-':return sub(num1,num2);break;
}
} 无符号整形 发表于 2018-8-15 19:04
???
你的名字 无符号整形 发表于 2018-8-15 19:04
???
你的名字 ZLSTJ 发表于 2018-8-16 03:24
你的名字
嗯 单步调试一下,看看哪一步出错? scanf_s("%d %c%d", &num1, &op, &nu你%d和%c之间有个空格 我之前也有这个问题,你把安全生命开发周期选项关闭掉,勾选空项目就行了
页:
[1]
2