使用指针将一个字符串复制到另一个字符串的程序不产生任何输出

Program which copies one string to another using pointers produces no output

我写了以下代码,它使用指针从一个字符串复制到另一个字符串。

#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 != '[=10=]') { 
        *ptrB++ = *ptrA++;
    }
    *ptrB = '[=10=]'; 
    puts(ptrB); // prints a new line. 
    return 0;

}

为什么 puts(ptrB) 只打印一个换行符?但是 puts(ptrA) 打印 strA.

的值

循环后,ptrAptrB 这两个指针现在指向字符串的末尾。打印它们就是打印一个空字符串。新行由 puts().

添加

ptrA 打印原始字符串的原因是因为在循环之前调用了 puts(ptrA);


要打印原始字符串,请使用 puts(strB),或者,如果您愿意,让 ptrB 返回:

*ptrB = '[=10=]'
ptrB = strB;  //add this
puts(ptrB);