读书人

*d=零;是什么意思啊

发布时间: 2012-09-14 23:00:48 作者: rapoo

*d=0;是什么意思啊?
今天看到字符串的倒序排列,但有一处不懂,
#include <stdio.h>
#include "string.h"
#include <stdlib.h>
int main()
{

char *src="Hello World";
int len=strlen(src);
char *dest=(char *)malloc((len+1)*sizeof(char));
char *d=dest;
char *s=&src[len-1];
while(len--!=0)
*d++=*s--;
*d=0;
printf("%s \n",dest);
free(dest);
return 0;

}
*d=0;是什么意思?
//尾部要加\0 但是这样加吗?求详解,谢谢大家

[解决办法]
*d
等价于
d[0]
[解决办法]
0 和 '\0' 在C语言这两个是等价了
[解决办法]
while(len--!=0)
*d++=*s--;

最终d指向字符串尾,

*d = 0 即为字符串尾部加‘\0’
[解决办法]
在内容读取字符,遇到0x00就会结束,否则会继续,由于LZ申请出来的内存没有清零操作,不加结束符会出现乱码
[解决办法]

探讨

while(len--!=0)
*d++=*s--;

最终d指向字符串尾,

*d = 0 即为字符串尾部加‘\0’

读书人网 >C语言

热点推荐