更如. 2022-01-08 20:24 采纳率: 66.7%
浏览 33
已结题

请问为什么第一种输出会引发异常,然后后两种会多一个问号❔

/编写一个程序, 将字符串 a 复制为字符串b, 然后输出字符串 b。要求使用指
针变量处理。 (第 8 章课程例题)
/
#include<stdio.h>
int main()
{
int i;
char a[] = { " this is a copyed string\n" }, b[200],*p_a,*p_b;
p_a = a;
p_b = b;
for (; *p_a != '\0'; p_a++, p_b++)//比较的是地址指向的内容
*p_b = *p_a;
*(p_b+1) = '\0';
printf("copy?:\n");
/*for (i = 0; p_b != '\0'; i++)
printf("%c", b[i]);
///第一个
//printf("%s", b);//第二个
for (p_b = b; *p_b != 0; p_b++)
printf("%c", *p_b);//第三个
printf("\0");
return 0;
}

  • 写回答

4条回答 默认 最新

  • _GX_ 2022-01-08 20:39
    关注
    /* 编写一个程序, 将字符串 a 复制为字符串b, 然后输出字符串 b。要求使用指
    针变量处理。 (第 8 章课程例题)*/
    #include <stdio.h>
    int main()
    {
        int i;
        char a[] = {"this is a copied string\n"}, b[200], *p_a, *p_b;
        p_a = a;
        p_b = b;
        for (; *p_a != '\0'; p_a++, p_b++) //比较的是地址指向的内容
            *p_b = *p_a;
        *(p_b + 1) = '\0';  // **这里应该是*p_b = '\0',因为p_b在之前的循环里已经加1了
        printf("copy?:\n");
        for (i = 0; *p_b != '\0'; i++)  // **这里循环条件写错了,应该是i<strlen(b);
            printf("%c", b[i]); ///第一个
        printf("%s", b);//第二个
        for (p_b = b; *p_b != 0; p_b++)
            printf("%c", *p_b); //第三个
        printf("\n");
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月9日
  • 已采纳回答 1月9日
  • 创建了问题 1月8日

悬赏问题

  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源