新手问题:嗨!旨在研究一个阵列在复制期间如何填充另一个(初始化的)阵列.所以我运行了以下代码.
#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;
}
Run Code Online (Sandbox Code Playgroud)
我所期望的是看到如何在每一步中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.
Run Code Online (Sandbox Code Playgroud)
我错过了一些基本的东西吗?任何解释都会有很大的帮助.
因为pB
在调用puts(pB)
循环之前你正在递增,所以你只看到strB
从当前值开始的部分pB
.
将你的循环改为:
while(*pA!='\0') {
*pB++ = *pA++;
puts(strB);
}
Run Code Online (Sandbox Code Playgroud)
并且您将在每个步骤后看到包含中间更改的整个字符串.