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

标签 c pointers

嘿,是的,你猜对了作业。我正在尝试使用指针反向打印字符串。虽然只有文字。所以“ 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/

相关文章:

c - 字符指针如何处理每个字节的MSB位?

c++ - GetCPUDescriptorHandleForHeapStart 堆栈损坏

创建数组并使用指针访问它们

c++ - %p说明符仅用于有效的指针吗?

c - 创建 connect 4 board c 程序时出现段错误

c - 指针初始化给出段错误

c - 如何从内核空间的用户空间指针中正确提取字符串?

c - 如何在 For 循环中使用多个 Char 数组和 Float 数组?

c++ - C++ 中指针和引用的问题

C++ 创建双向链接类