c语言初学者求教

[复制链接]
查看11 | 回复9 | 2021-1-27 05:27:05 | 显示全部楼层 |阅读模式
这个哪里有问题?



分 -->
回复

使用道具 举报

千问 | 2021-1-27 05:27:05 | 显示全部楼层
微软的编译器现在那么霸道了?竟然是错误而不是警告?
代码本身没问题,编译器让它有问题
看错误提示是,scanf被认为是不安全的(有内存越界的可能),所以编译器推荐你用scanf_s
其实用scanf_s反而还不利于移植,所以可以define一下_CRT_SECURE_NO_WARNNINGS宏来忽略该错误提示
回复

使用道具 举报

千问 | 2021-1-27 05:27:05 | 显示全部楼层
把scanf改成scanf_s吧,其他不变;建议楼主从网上搜一下scanf_s的用法,尤其是对%s,%c等需要增加参数~
回复

使用道具 举报

千问 | 2021-1-27 05:27:05 | 显示全部楼层
引用1楼qybao的回复:微软的编译器现在那么霸道了?竟然是错误而不是警告?
代码本身没问题,编译器让它有问题
看错误提示是,scanf被认为是不安全的(有内存越界的可能),所以编译器推荐你用scanf_s
其实用scanf_s反而还不利于移植,所以可以define一下_CRT_SECURE_NO_WARNNINGS宏来忽略该错误提示

这个代码加在哪里?我打了scanf_s调试时就成了空白
回复

使用道具 举报

千问 | 2021-1-27 05:27:05 | 显示全部楼层
引用2楼自信男孩的回复:把scanf改成scanf_s吧,其他不变;建议楼主从网上搜一下scanf_s的用法,尤其是对%s,%c等需要增加参数~
行,我找找谢谢了
回复

使用道具 举报

千问 | 2021-1-27 05:27:05 | 显示全部楼层
错误提示显示scanf函数是不安全的楼主可以试试下面这段代码应该可以解决你的问题
#define_CRT_SECURE_NO_WARNINGS
#include
intmax(inta,intb)
{
if(a>b)returna;
elsereturnb;
}
intmain()
{
intx,y,z;
printf("请输入两个整数:");
scanf("%d%d",&x,&y);
z=max(x,y);
printf("max=%d\n",z);
return0;
}
代码仅供参考

回复

使用道具 举报

千问 | 2021-1-27 05:27:05 | 显示全部楼层
引用5楼weixin_49230444的回复:错误提示显示scanf函数是不安全的楼主可以试试下面这段代码应该可以解决你的问题
#define_CRT_SECURE_NO_WARNINGS
#include
intmax(inta,intb)
{
if(a>b)returna;
elsereturnb;
}
intmain()
{
intx,y,z;
printf("请输入两个整数:");
scanf("%d%d",&x,&y);
z=max(x,y);
printf("max=%d\n",z);
return0;
}
代码仅供参考

谢谢了,这个我在书上没第一行就成功了,为什么实际操作就有了问题,这是编译器的问题?
回复

使用道具 举报

千问 | 2021-1-27 05:27:05 | 显示全部楼层
一般不同编译器99%的语法都是按照标准来的,当然不同编译器之间也会有略微的不同。就像这个scanf函数,可能在别的编译器没有错误,但是到了微软的编译器里面,必须得用微软提供的“安全”的scanf_s函数才行。不过一般没有什么太大的错误遇到了看一下错误提示小改一下就行
回复

使用道具 举报

千问 | 2021-1-27 05:27:05 | 显示全部楼层
谢谢了,我试试
回复

使用道具 举报

千问 | 2021-1-27 05:27:05 | 显示全部楼层
我会了,谢谢大家
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行