文字列の最初の文字を削除し、その後に「ay」を追加して文字列の最後に追加するメソッドを作成しようとしています。リンクリスト構造を使用していますが、機能しますが、100%ではないため、理由がわかりません。時々想定されていないことをしますが、前の単語の一部をランダムに追加しているようです。たとえば、「何が間違っているか」という入力は、「hatway hetay ellhay siay rongway」の出力になるはずですが、「hatway hetwayayellhayayaysilhayayayayrongway」という結果になります。
バグがあるように見える部分は次のとおりです。
typedef struct wordNodeType
{
char word[MAX_CHARS];
struct wordNodeType *next;// pointer to next node
}WordNode;
struct wordNodeType *tempP;
WordNode* translateWord (WordNode* nextWord)
{
strcpy(e,nextWord->word);
strcpy(p, &e[strlen(e)-(strlen(e)-1)]);// remove first letter
// remove newline char if there
if(p[strlen(p)-1] == '\n')
p[strlen(p)-1] = '\0';
p[strlen(p)] = e[0];//move first char of e to last char of p ***the problem seems to happen here
strcat(p,"ay");// append "tay" to end
strcpy(tempP->word,p);
return tempP;
}
ノードにメモリが割り当てられていますが、ノードには「word」の値があります。私のコードの残りの部分は、私を夢中にさせているこの小さなバグを除いて、正常に機能します!何かご意見は?