【发布时间】:2015-05-08 03:18:35
【问题描述】:
我编写了以下一段代码,它使用指针从一个字符串复制到另一个字符串。
#include<stdio.h>
int main() {
char strA[80] = "A string to be used for demonstration purposes";
char strB[80];
char *ptrA;
char *ptrB;
ptrA = strA;
ptrB = strB;
puts(ptrA);
while(*ptrA != '\0') {
*ptrB++ = *ptrA++;
}
*ptrB = '\0';
puts(ptrB); // prints a new line.
return 0;
}
为什么puts(ptrB) 只打印一个换行符?但是puts(ptrA) 打印出strA 的值。
【问题讨论】:
-
ptrB在循环之后指向哪里?到一个 NUL 终止符!所以什么都没有打印出来。换行符由puts添加。 -
不是必须在 char 数组的末尾放置一个 nul 终止符吗?我在这里错过了什么吗?如何使用 ptrB 打印 strB 的值?
-
是的。但是将
puts(ptrA)移到 你的while循环之后。 -
是的。但是你已经从循环中增加了
ptrB。在循环之后,您分配 NUL 终止符。现在ptrB(和ptrA)指向字符串末尾的\0。