回 帖 发 新 帖 刷新版面

主题:memset问题

void main()

{

  char* p1="name";

  char* p2;

  P2=(char*)malloc(20);

  memset(p2,0,20); 

  while(*p2++=*p1++)

  printf("%s\n",p2);

}


为什么输出的p2是空的啊?求教

回复列表 (共10个回复)

沙发

从代码上能看出很多东西,我建议你别搞程序开发 #include #include int main() { char* p1 = "name"; char* p2 = (char*)malloc(20); { char* p1_=p1; char* p2_=p2; while(*p2_++=*p1++); } printf("%s\n",p2); return 0; }

板凳

代码重贴 [code=c] #include #include int main() { char* p1 = "name"; char* p2 = (char*)malloc(20); { char* p1_=p1; char* p2_=p2; while(*p2_++=*p1++); } printf("%s\n",p2); return 0; } [/code]

3 楼

换个IE重贴 [code=c] #include #include int main() { char* p1 = "name"; char* p2 = (char*)malloc(20); { char* p1_=p1; char* p2_=p2; while(*p2_++=*p1++); } printf("%s\n",p2); return 0; } [/code]

4 楼

没办法了,sorry

5 楼


这是一个面试题,好吧,

6 楼


你写的还不是错误连篇

7 楼

[quote]
你写的还不是错误连篇[/quote]

其实bruceteen前辈的代码应该是这样的,可能是发贴时浏览器引起的格式问题。

#include <stdlib.h>
#include <stdio.h>

int main()
{
  const char *p1 = "name";
  char *p2 = (char *) malloc (20);

  {
    /* 不然如果要再次访问p1 p2,很麻烦 */
    const char *p1_ = p1;  
    char *p2_ = p2;

    /* memset(p2,0,20);   */ 
    /* while(*p2++=*p1++)
      printf("%s\n",p2); */ 
    /* 仔细体会++的语法,以及memset,容易明白没输出 */

    /* 建议加个括号 */
    while ((*p2_++ = *p1_++))  
      {}
    printf ("%s\n", p2); 
     /* 这样才会有输出 */
  }

  return 0;


仔细体会,应该明白bruceteen前辈的代码每句都有他的意义。

8 楼

好像不用  【code=c】 【/code】, 我这里发的代码格式也有问题。

好像把代码从文本文档复制出来也行。

9 楼

稍微修改下,指针移动后再打印,肯定是NULL
while(*p2 = *p1++)
{
printf("%s",p2);
*p2++;
}

10 楼

┅⌒∞∑⌒⌒有空同时沟通一下,谢谢楼主了,请继续努力ppt模板http://www.2ppt.cn

我来回复

您尚未登录,请登录后再回复。点此登录或注册