ユーザーが入力した配列 (文字列) へのポインターを作成しようとしています。
ここで、クラスでポインターと配列を定義します。
private:
char userWord[200]; // input word
char * userWordPtr; // Pointer to the beginning of the input word
情報を読み取る関数は次のとおりです。
void WordFont::inputWord()
{
cout << "What word would you like to draw?\n"
<< "The useable characters are: A E I O U Y B C D L M N R S T\n" ;
cout << "Please enter your word: ";
cin.get(userWord, 200);
cin.clear();
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
userWordPtr = &userWord;
}
ユーザーが単語を入力すると、コードは単語の文字に基づいて何か (長い if-else はしご) を実行します。しかし、* Ptr を if-else ラダーに渡す際に、ポインターの位置をインクリメントしているときに、if-else ラダーにヌル (/0) 文字を認識させることができません。また、'&' を使用して char 配列の先頭のアドレスを参照するとエラーが発生します。なぜそのエラーが発生するのか、また、「i」が「/0」文字を持つメモリ内のランダムな場所に到達するまで、以下の if-else はしごが終了しない理由がわかりません。「AAA」と入力するだけの簡単な操作を行うと、「/0」文字がある 4 番目の位置をはるかに超えてしまいます。
ループは次のとおりです。
void WordFont::buildOutputArray(char * Ptr)
{
length = 0;
bool switchLooper = true;
int i = 0;
do
{
if(*Ptr + i == 'a' || *Ptr + i == 'A')
constructA();
else if (*Ptr + i == 'e' || *Ptr + i == 'E')
constructE();
else if (*Ptr + i == 'i' || *Ptr + i == 'I')
constructI();
else if (*Ptr + i == 'o' || *Ptr + i == 'O')
constructO();
else if(*Ptr + i == 'u' || *Ptr + i == 'U')
constructU();
else if(*Ptr + i == 'b' || *Ptr + i == 'B')
constructB();
else if(*Ptr + i == 'c' || *Ptr + i == 'C')
constructC();
else if(*Ptr + i == 'd' || *Ptr + i == 'D')
constructD();
else if(*Ptr + i == 'l' || *Ptr + i == 'L')
constructL();
else if(*Ptr + i == 'm' || *Ptr + i == 'M')
constructM();
else if(*Ptr + i == 'n' || *Ptr + i == 'N')
constructN();
else if(*Ptr + i == 'r' || *Ptr + i == 'R')
constructR();
else if(*Ptr + i == 's' || *Ptr + i == 'S')
constructS();
else if(*Ptr + i == 't' || *Ptr + i == 'T')
constructT();
else if(*Ptr + i == '\0')
switchLooper = false;
i++;
}while(switchLooper);
}
これはおそらく簡単な初心者の間違いであり、他の多くの問題に気付くことになると思いますが、どんな助けでも大歓迎です。
ありがとう、トム