[セットトップ]文字列の逆配列


#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 
",dest); free(dest); return 0; }

次のようになります.
*d=0;どういう意味か分かりません.
while(len--!=0) *d++=*s--; 最終dは文字列の末尾を指し、*d=0は文字列の末尾に'0'を付ける
コンテンツで文字を読み取ると、0 x 00に遭遇すると終了します.そうしないと続行します.申請したメモリにクリア操作がないため、終了文字を付けないと文字化けしてしまいます.
'0'のasciiコードは0メモリにあり、文字はasciiコードに従って格納されます.
0と'0'はC言語では等価です