割り当てにこの問題があります。文字列を再帰的に別の空の文字列に逆にすることになっています。問題は、関数が元の文字列を変更することですが、文字列を目的の文字列に逆方向にコピーするだけです。なぜこれが起こっているのか理解できません...
#include <stdio.h>
#include <string.h>
void
invert(const char *src, char dest[])
{
if(*src=='\0')
return;
else
{
invert(src+1, dest);
dest[strlen(src)-1]=*src;
}
}
int main(int argc, const char * argv[])
{
char dest[]="";
char src[]="";
printf("write a word: \n");
scanf("%s", src);
invert(src, dest);
dest[strlen(src)]='\0';
printf("the inversion of the word is: %s\n", dest);
return 0;
}
例: Ulysses => sessesU と書き、Jones => seesJ\377 と書きます。