新手问题: 嗨!旨在研究一个阵列在复制期间如何填充另一个(初始化的)阵列。所以我运行了以下代码。
#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[]
个元素并保留{{1}元素。但我找不到将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.
我错过了一些基本的东西吗?任何解释都会有很大的帮助。
答案 0 :(得分:5)
由于您在循环中调用pB
之前正在递增puts(pB)
,因此您只能从{{1}的当前值开始看strB
的部分1}}。
将您的循环更改为:
pB
并且您将在每个步骤之后看到包含中间更改的整个字符串。
答案 1 :(得分:0)
在打印pB之前,您将增加pB指针。你可以像下面一样修改你的吗?
while(*pA!='\0') {
*pB = *pA++;
puts(pB);
pB++;
}