当前位置:  技术问答>linux和unix

memset 和 optarg 的问题

    来源: 互联网  发布时间:2016-05-21

    本文导语:  #include  #include  #include  #include  int main(int argc, char **argv) {         int opt;         char *s[] = {"./code", "-a", "hello", "-o", "para" };         if (argc!=5)         {                 argc = 5;   ...

#include 
#include 
#include 
#include 

int main(int argc, char **argv)
{
        int opt;

        char *s[] = {"./code", "-a", "hello", "-o", "para" };

        if (argc!=5)
        {
                argc = 5;
                argv = s;
        }
        printf("%d        n", argc);

        while((opt = getopt(argc, argv, "o:a:s:")) != EOF) {
                switch(opt) {
        case 'o':
                printf ("o  %sn", optarg);
                break;
        case 'a':
                printf ("a  %sn", optarg);
                int len = strlen(optarg);
                printf("len is     %dn", len);
                printf("optarg is     %sn", optarg);
                memset(optarg, 'X', len);
                break;
        case 's':
                printf ("s  %sn", optarg);
                break;
        default:
                break;
                }
        }

        return 0;
}


全部代码如上,生成code.exe 如果从命令行输入 ./code -a  dsfds -o para
代码正常,但如果仅仅输入 ./code  引发Segmentation fault (core dumped)

这两种执行方式为何后者出现问题 ? 如何解决  ? 谢谢

|
 char *s[] = {"./code", "-a", "hello", "-o", "para" };
静态区吧?

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 动态分配内存后,memset失败
  • 怎么知道哪些函数需要连接什么库,如memset,sleep等等
  • memset分配的空间用完以后需要进行释放吗? 如果需要释放,怎么释放呢? ---阿菜
  • 在测试memset函数的执行效率时,分为使用Cash和不使用Cash辆种方式,该如何控制是否使用缓存?
  • 基于memset()函数的深入理解
  • 浅析C++中memset,memcpy,strcpy的区别
  • memset函数的使用分析
  • 如何测定memset函数执行所需的时间?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3