gpt4 book ai didi

C初学者查询: char array program - not getting desired output

转载 作者:行者123 更新时间:2023-12-03 02:17:17 26 4
gpt4 key购买 nike

新手问题:你好!旨在研究一个数组在复制过程中如何填充另一个(初始化的)数组。所以我运行了以下代码。

#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.

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

最佳答案

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

将循环更改为:

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

您将看到整个字符串以及每个步骤后的中间更改。

关于C初学者查询: char array program - not getting desired output,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31744170/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com