查看: 2600|回复: 11
收起左侧

[其他] 如何让程序不报任何错误?

[复制链接]
恋爱的夏娜
头像被屏蔽
发表于 2013-9-16 17:30:30 | 显示全部楼层 |阅读模式
本帖最后由 恋爱的夏娜 于 2013-9-16 17:46 编辑

#include <stdio.h>
#include <string.h>
int main()
{
        int f;
        char w[]="高町なのは",e[]="シャナ";
        puts(w);
        puts(e);
        printf("---------------------\n");
        scanf("%d",&f);
        switch (f)
        {
                case 1: strcat(w,e); puts(w); puts(e);break;
                case 2: strcpy_s(w,e); puts(w); puts(e);break;
                default: printf("Invalid Value.\n");break;
        }
        printf("---------------------\n");
        return 0;
}


这段程序最后一定会报f变量周围的栈被破坏,虽然可以顺利显示最后我想要的结果,当我输入1的时候。
谁能告诉我错在哪里?


PS:编程环境为VS2012 Ultimate with Net 4.5

最新更新:指定一个确定的字符串长度以后,连接两个字符串的时候终于不再报错了。
伊川书院
发表于 2013-9-16 20:47:53 | 显示全部楼层
off all  err
恋爱的夏娜
头像被屏蔽
 楼主| 发表于 2013-9-16 20:53:12 | 显示全部楼层
伊川书院 发表于 2013-9-16 20:47
off all  err

死开!
dfliaoyue
发表于 2013-9-16 21:09:05 | 显示全部楼层
看到你的更新了,本来想说的,非法使用内存。c里必须指定字符串长度。c++里的string会省事些
伊川书院
发表于 2013-9-16 21:26:10 | 显示全部楼层
本帖最后由 伊川书院 于 2013-9-16 21:28 编辑
恋爱的夏娜 发表于 2013-9-16 20:53
死开!


这类命令很神奇的,,防崩馈必杀招,,,一般放在代码的结尾处效果更佳。。

也是懒人必备绝招,,,
恋爱的夏娜
头像被屏蔽
 楼主| 发表于 2013-9-16 22:15:11 | 显示全部楼层
伊川书院 发表于 2013-9-16 21:26
这类命令很神奇的,,防崩馈必杀招,,,一般放在代码的结尾处效果更佳。。

也是懒人必备绝招 ...

……总之……
没有总之了。。。
loms126
发表于 2013-9-17 13:38:55 | 显示全部楼层
http://www.cplusplus.com/reference/cstring/strcat/

使用strcpy时,需保证destination有足够长度容纳source。否则。。。。缓冲区溢出。。。

为安全起见,用strcpy_s吧。或者,加个判断溢出的函数。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?快速注册

x
恋爱的夏娜
头像被屏蔽
 楼主| 发表于 2013-9-17 18:15:00 | 显示全部楼层
loms126 发表于 2013-9-17 13:38
http://www.cplusplus.com/reference/cstring/strcat/

使用strcpy时,需保证destination有足够长度容纳s ...

我知道了,大概之前因为不指定长度,所以系统是默认他所占用的长度为那个长度,结果因为自适应的关系,没有留给待挂接字符串足够的空间,导致出错。
loms126
发表于 2013-9-17 19:41:09 | 显示全部楼层
恋爱的夏娜 发表于 2013-9-17 18:15
我知道了,大概之前因为不指定长度,所以系统是默认他所占用的长度为那个长度,结果因为自适应的关系,没 ...

就是这个意思。C的字符串用起来真心不方便。以前用C写算法时,时不时来个莫名其妙的段错误,debug到想吐。。。
恋爱的夏娜
头像被屏蔽
 楼主| 发表于 2013-9-17 19:59:04 | 显示全部楼层
loms126 发表于 2013-9-17 19:41
就是这个意思。C的字符串用起来真心不方便。以前用C写算法时,时不时来个莫名其妙的段错误,debug到想吐。 ...

哎呀……看来以后得对C敬而远之了。。。
等这个所谓的2级烤完了以后。
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2025-5-5 20:19 , Processed in 0.137622 second(s), 17 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表