标题:这个程序为何在VS2017中编译出现错误,求大佬指教!谢谢!
只看楼主
菜鸟100学C
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2018-9-28
结帖率:50%
已结贴  问题点数:20 回复次数:7 
这个程序为何在VS2017中编译出现错误,求大佬指教!谢谢!
#include <stdio.h>
void Scrip(char* lead);

int main()
{
    char cSelect[20] = "";
    printf("导演选定主角是:");
    scanf_s("%s", &cSelect);
    Scrip(cSelect);
    system("pause");
    return 0;
}

void Scrip(char* lead)
{
    printf("%s开始参演这个剧本\n",lead);
}
搜索更多相关主题的帖子: VS2017 编译 出现 错误 char 
2018-09-28 22:18
幻紫灵心
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山咔咔里面
等 级:贵宾
威 望:53
帖 子:395
专家分:2640
注 册:2018-3-30
得分:20 

程序代码:
#include <stdio.h>
#include <stdlib.h>
void Scrip(char* lead);
int main()
{
    char cSelect[20] = "";
    printf("导演选定主角是:");
    scanf_s("%s", cSelect,20);//去掉取地址符号& ,增加限制数20
    Scrip(cSelect);
    system("pause");
    return 0;
}

void Scrip(char* lead)
{
    printf("%s开始参演这个剧本\n",lead);
}

saber,别哭.
2018-09-28 22:59
菜鸟100学C
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2018-9-28
得分:0 
运行程序又出现以下提示:
已引发异常
Run-Time Check Failure #2 - Stack around the variable 'cSelect' was corrupted.

这是怎么回事!求大神指点
2018-09-28 23:11
菜鸟100学C
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2018-9-28
得分:0 
谢谢大神!问题已经解决!
请问这是为什么?谢谢
scanf_s("%s", cSelect,20);//去掉取地址符号& ,增加限制数20
2018-09-28 23:18
幻紫灵心
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山咔咔里面
等 级:贵宾
威 望:53
帖 子:395
专家分:2640
注 册:2018-3-30
得分:0 
你的cSelect本来就是一个指针了(指向字符数组首地址),不用加取地址符的。
scanf_s 相较于 scanf 只是增加了限制字符读入,增加安全性,必须在后面跟上限制的数量
个人觉得没有什么特殊需要的话只用scanf就行了,c的标准库里面也只有scanf

saber,别哭.
2018-09-29 08:17
菜鸟100学C
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2018-9-28
得分:0 
回复 5楼 幻紫灵心
scanf好像在VS 2017中无法编译。请大神指教!谢谢!
2018-09-29 23:27
Mr_doge
Rank: 5Rank: 5
等 级:贵宾
威 望:10
帖 子:159
专家分:385
注 册:2018-6-28
得分:0 
回复 6楼 菜鸟100学C
微软的VS因为scanf()的溢出可能性存在可能的安全问题,默认不允许使用这个库函数,你可以正常使用对应的替代scanf_s()函数,或者关闭相关的安全限制
2018-10-07 09:21
拉拉面
Rank: 1
来 自:广州
等 级:新手上路
帖 子:26
专家分:5
注 册:2018-9-22
得分:0 
#include <stdio.h>
#include <stdlib.h>
void Scrip(char lead[]);

int main()
{
    char cSelect[20]={0};
    printf("导演选定主角是:");
    scanf("%s", cSelect);
    Scrip(cSelect);
    system("pause");
    return 0;
}

void Scrip(char lead[])
{
    printf("%s开始参演这个剧本\n",lead);
}

哈哈哈哈哈啦啦啦
2018-10-07 18:24



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-490065-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016594 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved