[求助]最近做题有个问题希望大家帮着解答一下,我认为答案是abc abc
#include <stdio.h>
main()
[char *p,*q;
p=(char *)malloc(sizeof(char)* 20);q=p;
scanf("%s%s"p,q);
printf("%s %s\n",p,q);
}
若从键盘输入:abc def(回车),则答案为def def.
----------------解决方案--------------------------------------------------------
当然是def def,q的值是def,q和p是同一个内存空间,所以是2个def
----------------解决方案--------------------------------------------------------
以下是引用谢芳在2006-3-8 19:59:00的发言:
#include <stdio.h>
main()
[char *p,*q;
p=(char *)malloc(sizeof(char)* 20);q=p;
scanf("%s%s"p,q);
printf("%s %s\n",p,q);
}
若从键盘输入:abc def(回车),则答案为def def.
#include <stdio.h>
main()
[char *p,*q;
p=(char *)malloc(sizeof(char)* 20);q=p;
scanf("%s%s"p,q);
printf("%s %s\n",p,q);
}
若从键盘输入:abc def(回车),则答案为def def.
main()函数后错误
----------------解决方案--------------------------------------------------------
p和 q指向同一段内存存储单元,他们的值都是malloc函数开辟的一段内存的首地址,先输入 "abc",然后从q的地址又输入了"def",实际上是把前八个字节的单元重新写了一次,简单点就是def把abc覆盖了
----------------解决方案--------------------------------------------------------
def覆盖了abc啊
----------------解决方案--------------------------------------------------------
以下是引用谢芳在2006-3-8 19:59:00的发言:
#include <stdio.h>
main()
[char *p,*q;
p=(char *)malloc(sizeof(char)* 20);q=p;
scanf("%s%s",p,q);
printf("%s %s\n",p,q);
}
若从键盘输入:abc def(回车),则答案为def def.
#include <stdio.h>
main()
[char *p,*q;
p=(char *)malloc(sizeof(char)* 20);q=p;
scanf("%s%s",p,q);
printf("%s %s\n",p,q);
}
若从键盘输入:abc def(回车),则答案为def def.
----------------解决方案--------------------------------------------------------
main()后面应该是{ 而不是[
要注意了。
----------------解决方案--------------------------------------------------------
楼主的输入语句输错了
虽然少了一个空格,但是这足够叫高手把错误的结果告诉你!
----------------解决方案--------------------------------------------------------
4楼说的有道理
----------------解决方案--------------------------------------------------------
你们这些人当中有没有过了计算机二级C语言的?这种题都还反复不断的说就好象在证明一下自己一样,怕哪个不知道你是一个高手所,多去帮另外的人解决一些更难的题嘛。
----------------解决方案--------------------------------------------------------