| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 8593 人关注过本帖
标题:【scanf_s 使用】
只看楼主 加入收藏
zuifei07
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2014-2-5
收藏
得分:0 
找到了。。。
是这个帖子。。
https://bbs.bccn.net/thread-434659-1-1.html

唉。。怪不得你那么生气。。原来把分给了别人了。。还以为那个人是你。

把分给他的原因。。。因为我换成strcpy之后。。就通过了(实际早就解决了。。群里说的。。)
2014-08-05 00:38
zuifei07
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2014-2-5
收藏
得分:0 
以下是引用zuifei07在2014-8-4 09:21:56的发言:

这个问题困扰我好几天。。

定义了一个结构体。。

#pragma pack(1)
typedef struct birth{
    int year;
    int month;
    int day;
};


typedef struct worker{
    int id;
    char name[100];
    int age;
    struct birth birthday;
};
#pragma pack()


struct worker id[99];

这个是执行代码。。

char addcc[3];
    char *paddc=addcc;
    int addc;
    addc=0;
    paddc="-1";
addgets:

    fflush(stdin);
    addc=scanf_s("%d,%s,%d,%d/%d/%d",&id.id,1,&id.name,10,&id.age,&id.birthday.year,&id.birthday.month,&id.birthday.day);
    printf("addc=%d",addc);
    if(addc!=6){
        if(addc==1)
        {
            if(id.id==-1){
                backmenu(addcc);
            }else{
                printf("请按照正确的格式输入,或者输入-1返回上一目录\n");
            }
        }else{
            printf("请按照正确的格式输入,或者输入-1返回上一目录\n");
        }
    }else{
    printf("%d,%s,%d,%d/%d/%d",id.id,id.name,id.age,id.birthday.year,id.birthday.month,id.birthday.day);
    }


scanf_s总是溢出。。
怎么回事。

知道这句有问题。。要不然怎么会说scanf_s总是溢出了。。还有。。你完全忽略了我文那个函数怎么用了吧。。直接就说我等别人写好给我。。无语了
2014-08-05 00:40
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
收藏
得分:7 
这种长期滴经常滴一贯滴不散分和散错分滴行为都是令人难以接受滴无法容忍滴后果极其严重滴……

梦想拥有一台龙芯3A-4000
2014-08-05 00:59
vvvcuu
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:353
专家分:1253
注 册:2014-4-22
收藏
得分:7 
百度百科的原话;
ANSI C中没有scanf_s(),只有scanf(),scanf()在读取时不检查边界,所以可能会造成内存泄露。所以vc++2005/2008中提供了scanf_s(),在最新的VS2013中也提供了scanf_s()。在调用时,必须提供一个数字以表明最多读取多少位字符

我不用vs, 我的电脑带vs太费劲。  没法做详细的测试来说明。

推荐一个帖子;https://bbs.bccn.net/viewthread.php?tid=433433&extra=&page=4
你可以重点看一下版主TonyDeng的回答。应该有帮助。

代码测试环境:  WinXP+C-Free5.0.
2014-08-05 08:17
zuifei07
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2014-2-5
收藏
得分:0 
以下是引用ditg在2014-8-5 00:59:03的发言:

这种长期滴经常滴一贯滴不散分和散错分滴行为都是令人难以接受滴无法容忍滴后果极其严重滴……
嗯嗯~~多谢多谢~~
多谢知道。。
以后帖子提高分数。。。。散分~
2014-08-05 09:32
zuifei07
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2014-2-5
收藏
得分:0 
以下是引用vvvcuu在2014-8-5 08:17:36的发言:

百度百科的原话;
ANSI C中没有scanf_s(),只有scanf(),scanf()在读取时不检查边界,所以可能会造成内存泄露。所以vc++2005/2008中提供了scanf_s(),在最新的VS2013中也提供了scanf_s()。在调用时,必须提供一个数字以表明最多读取多少位字符
我不用vs, 我的电脑带vs太费劲。  没法做详细的测试来说明。
 
推荐一个帖子;https://bbs.bccn.net/viewthread.php?tid=433433&extra=&page=4
你可以重点看一下版主TonyDeng的回答。应该有帮助。
嗯嗯,。。
多谢。。多谢。。。版主说的很有道理~
2014-08-05 09:36
快速回复:【scanf_s 使用】
数据加载中...
 
   



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

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