新手问题:
嗨!旨在研究在复制过程中一个阵列如何填充另一个(初始化的)阵列。因此,我运行了以下代码。

#include<stdio.h>

char strA[]= "\nThis is array 'a'.\n";
char strB[] = "ABCDEFGABCDEFGABCDEFG";

int main()
{
  /* Copy one string to another using pointers */

  char *pA, *pB;
  puts(strA);
  puts(strB);
  pA=strA;
  pB=strB;
  puts(pA);
  puts(pB);
  while(*pA!='\0') {
    *pB++ = *pA++;
    puts(pB);
  }
  *pB='\0';
  puts(strB);

  return 0;
}


我期望看到的是在每个步骤中strA[]如何将自身复制到strB[]中,即中间strB[]的某处将复制strA[]元素并保留strB[]元素。但是我找不到复制到strA[]中的strB[]元素,尽管strB[]元素一直在减少。以下是输出:

This is array 'a'.

ABCDEFGABCDEFGABCDEFG

This is array 'a'.

ABCDEFGABCDEFGABCDEFG
BCDEFGABCDEFGABCDEFG
CDEFGABCDEFGABCDEFG
DEFGABCDEFGABCDEFG
EFGABCDEFGABCDEFG
FGABCDEFGABCDEFG
GABCDEFGABCDEFG
ABCDEFGABCDEFG
BCDEFGABCDEFG
CDEFGABCDEFG
DEFGABCDEFG
EFGABCDEFG
FGABCDEFG
GABCDEFG
ABCDEFG
BCDEFG
CDEFG
DEFG
EFG
FG
G

This is array 'a'.

Process returned 0 (0x0)   execution time : 0.025 s
Press any key to continue.


我在这里缺少基本的东西吗?任何解释都会有很大帮助。

最佳答案

由于在循环中调用pB之前要递增puts(pB),所以您只能看到strB的一部分是从pB的当前值开始的。

将循环更改为:

while(*pA!='\0') {
    *pB++ = *pA++;
    puts(strB);
}


并且您会在每个步骤之后看到整个字符串以及中间的变化。

关于c - C初学者查询:char数组程序-未获得所需的输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31744170/

10-11 14:51