【发布时间】:2015-07-31 10:39:31
【问题描述】:
新手问题: 你好!旨在研究一个数组在复制过程中如何填充另一个(初始化的)数组。所以我运行了以下代码。
#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[] 元素。但是我找不到复制到strB[] 中的strA[] 元素,尽管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前进通过strB,因此puts(pB)将从当前位置打印字符串。如果要打印整个、部分覆盖的字符串,请在循环内调用puts(strB)。 -
您将循环中的指针推进到字符串的末尾。当您将所述指针视为字符串的开头时,您实际上是在向后移动字符串的开头。尝试使用两个单独的指针,一个用于打印,一个用于循环。