我正在尝试编写一种方法来删除字符串的第一个字母并将其附加到字符串的末尾,然后附加“ay”。我使用的是链表结构,它可以工作,但不是 100%,我不知道为什么。它有时会做不应该做的事情,但它似乎会随机添加先前单词的部分内容。例如,输入“到底怎么回事”应该是“hatway hetay ellhay siay rongway”的输出,但它给了我“hatway hetwayay ellhayayay silhayayayay rongway”
这是似乎有错误的部分:
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”中有一个值。我的其余代码工作正常,除了这个让我发疯的小错误!有什么想法吗?