ポインター演算のみでstring
/を逆にする単純な C++ 関数を作成したいと考えてい
ます。char[]
私は概念を理解しており、コードは既に入力しています。
次の .cpp ファイルがあります。
#include <iostream>
using std::cout;
using std::endl;
void reverse(char* target) //Requirements specify to have this argument
{
cout << "Before :" << target << endl; // Print out the word to be reversed
if(strlen(target) > 1) // Check incase no word or 1 letter word is placed
{
char* firstChar = &target[0]; // First Char of char array
char* lastChar = &target[strlen(target) - 1]; //Last Char of char array
char temp; // Temp char to swap
while(firstChar < lastChar) // File the first char position is below the last char position
{
temp = *firstChar; // Temp gets the firstChar
*firstChar = *lastChar; // firstChar now gets lastChar
*lastChar = temp; // lastChar now gets temp (firstChar)
firstChar++; // Move position of firstChar up one
lastChar--; // Move position of lastChar down one and repeat loop
}
}
cout << "After :" << target << endl; // Print out end result.
}
void main()
{
reverse("Test"); //Expect output to be 'tseT'
}
デバッガーを何度かステップ実行しましたが、そのたびにtemp = *firstChar
while ループの行でクラッシュします。ここでフリーズし、プログラムの実行が停止して終了できなくなります。私が単に見落としているものはありますか、それともなぜこのようにできないのか、もっと深い何かがあります.
編集: else条件がありますが、簡潔にするために削除しました。それはif
ステートメントの後であり、単語が1文字であるか、単語が入力されていないことを促しただけです。