我写了下面一段代码,它使用指针从一个字符串复制到另一个字符串。
#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
的值。 最佳答案
循环之后,两个指针ptrA
和ptrB
现在指向字符串的末尾。打印它们是打印空字符串。新行由puts()
添加。
打印原始字符串的原因是在循环之前调用了ptrA
。
要打印原始字符串,请使用puts(ptrA);
,或者如果愿意,让puts(strB)
指向后面:
*ptrB = '\0'
ptrB = strB; //add this
puts(ptrB);