24小时热门版块排行榜    

查看: 612  |  回复: 1

hmmwjs

木虫 (著名写手)

你猜

[求助] 关于scanf的问题,解决送小红花

我的代码是:
#include<stdio.h>
int main(void)
{
        float weight;
        char name[100];
        printf("Name:";
        scanf("%s", name);
        printf("%s, hi! Weight:", name);
        scanf("%f",&weight);
        return 0;
}
运行结果是【VC6.0】:
关于scanf的问题,解决送小红花

代码无论是vc6.0 还是vs2013都是运行时出错,在VS2013中,将上面的scanf用scanf_s替换后,运行结果为【vs2013】:
关于scanf的问题,解决送小红花-1
回复此楼
亲身体验通常是成长所必须的
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hmmwjs

木虫 (著名写手)

你猜

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
月只蓝: 金币+10, 感谢提供解决方案 2017-06-09 19:44:44
已解决:在vc6.0中,由于scanf读取的时候,遇到空白字符会停止读取,故遗留下的换行符就会存在**中(**可能是内存或者堆栈之类的吧),在scanf结尾的程序中,残留的换行符引起的错误,再详细的就不知道了,解决办法就是后面加一个printf可行,网上说的方法:scanf后加getchar()【头文件conio.h】,经过测试不可行,当然也许是我方法不对。
在vs2013中,scanf被scanf_s替代,而scanf_s的用法居然是scanf_s("%s",name,sizeof(name))、scanf_s("%f",&weight,sizeof(weight)),做出相应的修改即可。加不加printf程序在运行时都不会出错了
亲身体验通常是成长所必须的
2楼2017-06-08 23:18:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 hmmwjs 的主题更新
信息提示
请填处理意见