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