[セットトップ]文字列の逆配列
#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言語では等価です