/编写一个程序, 将字符串 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;
}
请问为什么第一种输出会引发异常,然后后两种会多一个问号❔
- 写回答
- 好问题 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; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥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文件加载里面的的资源