C++问题 改错

来源:百度知道 编辑:UC知道 时间:2024/07/16 06:33:39
#include<iostream.h>
#include<malloc.h>
#include<string.h>
#include<stdio.h>
void main()
{
char * src="hello word";
char * dst=NULL;
int len=strlen(src);
dst=(char *)malloc(len);
char *d=dst;
char *s=src;
while(len--!=0)
{d=s++;d++;};
cout<<dst;

}

{d=s++;d++;}; //只是改变了指针d的指向,最后指向src的末尾,而dst中根本未被赋值过程中也并未起到作用
{*d=*s++;d++;}; //这样就可以给dst赋值,循环结束加个*d=0;

字符串实际占用的空间是字符后面另外加上一个0的空间。
strlen返回的结果只是所有字符串的字符数,没有包括0.
所以malloc函数应该是malloc(len+1);

四个定义都错了.不能给字符数组名直接赋初值

dst你根本都没赋到值,由此到终dst一点用途都没有,你开辟空间给它到底有什么用
你只是让指针d指向了它,但很快你又将指针D指向了s,while语句你改成下面的自己运行跟踪下,看运行结果就了解了

while(len--!=1)
{
d=s++;
cout<<d<<endl;
d++;
cout<<d<<endl;
};
}