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

After the loop, the two pointers ptrA and ptrB are now pointing to end of the string. Printing them is printing an empty string. The new line is added by puts().

The reason ptrA prints the original string is because puts(ptrA); is called before the loop.


To print the original string, either use puts(strB), or, if you like, let ptrB points back:

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