【问题标题】:Why pointer in puts() function isn't work in line 4 of the following code? Though line 1 is working为什么 puts() 函数中的指针在以下代码的第 4 行中不起作用?虽然第 1 行正在工作
【发布时间】:2016-07-31 08:32:15
【问题描述】:
char poem[80]="Amar sonar bangla";
char rpoem[80];
int main()
   {
      char *pA, *pB;
      pA=poem;
      puts(pA);  /*line 1*/
      puts(poem);/*line 2*/
      pB=rpoem;
      while(*pA!='\0')
        {
          *pB++=*pA++ ;   
        }
     *pB='\0';
     puts(rpoem);/*line 3*/
     puts(pB);   /*line 4*/

    return 0;
  }

当我运行此代码时,它只显示puts(pA)puts(poem)puts(rpoem) 的结果,但没有puts(pB) 的结果。我正确地将pB 分配给了指针rpoem。 在将字符串从poem 处理到rpoem 之后,即*pA*pB。但是在puts() 函数pB 中没有显示复制的字符串。有人能告诉我错误吗?

【问题讨论】:

  • puts(pB); : pB 指向'\0'

标签: c pointers puts


【解决方案1】:

因为在“第 4 行”,'pB' 指向 NUL 字节,而不是字符串的开头。您可以在循环中使用临时指针,而不是直接修改'pB'。

【讨论】:

    【解决方案2】:

    因为 pB 指针是由空值分配的,该值替换为 pB 指针的先前值。所以第 4 行打印空值。

    【讨论】:

      猜你喜欢
      • 2016-11-12
      • 1970-01-01
      • 1970-01-01
      • 2017-02-17
      • 2016-03-22
      • 1970-01-01
      • 1970-01-01
      • 2021-06-09
      • 1970-01-01
      相关资源
      最近更新 更多