0

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

#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

4

1 回答 1

4

循环之后,两个指针ptrA现在ptrB都指向字符串的结尾。打印它们是打印一个空字符串。新行由 . 添加puts()

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


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

*ptrB = '\0'
ptrB = strB;  //add this
puts(ptrB);
于 2015-05-08T03:24:38.193 回答