gpt4 book ai didi

c - 如何使用指针和数组在c中一个一个地反转单词

转载 作者:行者123 更新时间:2023-12-02 02:25:37 25 4
gpt4 key购买 nike

嘿,是的,你猜对了作业。我正在尝试使用指针反向打印字符串。虽然只有文字。所以“ Hello World ”是“olleh dlrow”。我在下面的代码中所做的是将一个指针(pSentence,它是从主函数传递下来的多个单词的字符串数组)分配给一个临时指针直到一个空格,然后向后递增并从临时指针打印字符到单词的开头,然后再做一次。我目前被困住了,我不知道如何标记单词的开头并只增加到那个。我知道 while(pt != '0') 根本不是这样做的方法。提示说将单词存储到一个临时字符串(tmpStrg)中并使用 pT 指向它,所以也许我需要对 tmpStrg 做些什么?非常感谢任何帮助,并在此先感谢您!

void prtWords(char *pSentence)
{
char tmpStrg[81], *pT=tmpStrg;
int length=0;

while(*pSentence != '\0')
{
while(*pSentence != ' ' && *pSentence != '/0')
{
*pT=*pSentence;
pT++;
pSentence++;
length++;
}
pSentence++;

while(length >= 0);
{
printf("%c", *pT);
pT--;
length--;
}
}
}

最佳答案

void prtWords(char *pSentence)
{
char tmpStrg[81], *pT=tmpStrg;

根据您的代码,我想您在这里使用 tmpStrg[81] 作为单词的新字符串,然后以相反的顺序打印单词。

    int length=0;
while(*pSentence != '\0')
{
while(*pSentence != ' ')
{

这是你的溢出问题,你应该同时测试 \0 (并将第二个 while 更改为 && 与第一个 while 不变)。不能保证句子以 结尾。

         *pT=*pSentence;
pT++;
pSentence++;
length++;
}
pSentence++;
while(length >= 0);

length0 时,您不应该做任何事情。更改为 >

       {
printf("%c", *pT);

你应该先做 pT--,因为最后一个 pT++ 没有赋值。

         pT--;
length--;
}

*pSentence == ' '时,这里打印一个

    }
}

自己编写完整的代码,因为这是家庭作业。欢迎提出任何进一步的问题。

关于c - 如何使用指针和数组在c中一个一个地反转单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6118432/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com