/编写一个程序, 将字符串 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无用