我写了下面一段代码,它使用指针从一个字符串复制到另一个字符串。
#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
指向后面:
*ptrB = '\0'
ptrB = strB; //add this
puts(ptrB);
关于c - 使用指针将一个字符串复制到另一个字符串的程序不产生任何输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30115187/