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

strcat函数的疑问

    来源: 互联网  发布时间:2016-03-20

    本文导语:  #include  #include  int main(int argc, char *argv[]) {     char *string;     string = strcat(argv[1], " ");     string = strcat(string, argv[2]);     string = strcat(string, " ");     string = strcat(string, argv[3]);     printf("%sn", st...

#include 
#include 

int main(int argc, char *argv[])
{
    char *string;
    string = strcat(argv[1], " ");
    string = strcat(string, argv[2]);
    string = strcat(string, " ");
    string = strcat(string, argv[3]);
    printf("%sn", string);
    return 0;
}

假定程序编译后命名为echo,那么“./echo i love you baby”后回车
出来的结果不是预想的“i love you”,而是“i  you”(i和you之间是2个空格)
把代码用循环来实现,然后输入更多的文字,后面显示均正常,就是第二个不能显示
请问哪里有错误导致这种情况的出现呢?

|
不好意思,还是漏掉了argv[3]最后的那个''

还没有明白为什么吗?
7fffffffecee
7fffffffecf0
7fffffffecf5

从7fffffffecee (argv[1])开始的内存布局:

argv[1]-------argv[2]----------------------------argv[3]-----------------------------
---|------------|----------------------------------|---------------------------------
-------------------------------------------------------------------------------------
|'I'   |''  |'l'   |'o'   |'v'   |'e'   |''  |'y'   |'o'   |'u'   |'!'   |''  |
-------------------------------------------------------------------------------------
    string = strcat(argv[1], " ");执行后
-------------------------------------------------------------------------------------
|'I'   |'x20'|''  |'o'   |'v'   |'e'   |''  |'y'   |'o'   |'u'   |'!'   |''  |
-------------------------------------------------------------------------------------
    string = strcat(string, argv[2]);执行后
-------------------------------------------------------------------------------------
|'I'   |'x20'|''  |'o'   |'v'   |'e'   |''  |'y'   |'o'   |'u'   |'!'   |''  |
-------------------------------------------------------------------------------------
    string = strcat(string, " ");执行后
-------------------------------------------------------------------------------------
|'I'   |'x20'|'x20'|''  |'v'   |'e'   |''  |'y'   |'o'   |'u'   |'!'   |''  |
-------------------------------------------------------------------------------------
    string = strcat(string, argv[3]);执行后
-------------------------------------------------------------------------------------
|'I'   |'x20'|'x20'|'y'   |'o'   |'u'   |'!'   |''  |'o'   |'u'   |'!'   |''  |
-------------------------------------------------------------------------------------

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












  • 相关文章推荐
  • 新人求助 关于strcat的错误
  • Linux和HP-UX下的strcat的内存越界问题
  • Linux 下,我想看 strcpy,strcat的 源代码?
  • 一个有关strcat()的问题
  • c++ 连接两个字符串实现代码 实现类似strcat功能


  • 站内导航:


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

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

    浙ICP备11055608号-3