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

标签 c string pointers puts

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

#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 的值。

最佳答案

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

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


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

*ptrB = '\0'
ptrB = strB;  //add this
puts(ptrB);

关于c - 使用指针将一个字符串复制到另一个字符串的程序不产生任何输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30115187/

相关文章:

c++ - 将 char 数组复制到另一个数组会产生垃圾值

c - 将完整文件名拆分为多个部分

c - 尝试解析 WAV 文件,memcpy 结果意外

c - 如何将 int 添加到 int** ?

c - 警告 : implicit declaration of function TableCreate

c - 如何在 C 中两个索引之间的链表中的 "extract"节点?

c - 错误 : expected expression before '%' token

c# - 检查字符串是否包含子字符串列表并保存匹配的子字符串

c - 如何在不打开文件的情况下从文件路径获取内存地址

java - 是否有可能在java中获取变量堆上的地址?