文字列の長さに奇妙なバグがあります。私はこれにかなり慣れていないので、おそらく私が見逃している基本的なものです。
文字の配列 (つまり、文字列の最初の文字) へのポインターを取得し、最初の文字と同じサイズの文字列へのポインターを返すプログラムを作成しようとしていますが、文字が逆になっています。たとえば、Computer は retupmoC になります。tacocatはtacocatのままです:)
コードは次のとおりです。
char* return_flipped_string(char* stringptr)
{
int i=0,size_of_string=length_of_string(stringptr);
char *flipped;
flipped=(char *)malloc(size_of_string*sizeof(char));
while(i<size_of_string)
{
*(flipped+i)=*(stringptr+size_of_string-1-i);
i++;
}
return flipped;
}
stringptr は元の文字列へのポインターであり、反転したのは私が返しているものです。反転した文字列を印刷すると、元の文字列が反転し、その後に見分けがつかない意味不明な文字列が表示されます。何らかの理由で同じサイズではありません。
文字列の長さを見つけるために私が書いたコードは次のとおりです(正常に動作します)
int length_of_string(char* stringptr)
{
int length=0,i=0;
while(*(stringptr+i)!='\0')
{
length++;
i++;
}
return length;
}