/编写一个程序, 将字符串 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;
}
/* 编写一个程序, 将字符串 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;
}
主要错误就是*(p_b+1) = '\0';应改为*p_b= '\0';
#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 = '\0';
printf("copy?:\n");
printf("%s", b);
return 0;
}
题主主要就是上面一些小细节出了错误,我改了一下,题主可供参考:
//用指针变量来处理问题
#include <stdio.h>
int main() {
//定义字符串,以及指针
char a[] = "this is a copyed string\n", b[200], * p1_a, * p2_b;
//实现复制功能
p1_a = a;
p2_b = b;
for (; *p1_a != '\0'; p1_a++, p2_b++) {
*p2_b = *p1_a;
}
*p2_b = '\0';
printf("字符串a为:");
printf("%s", a);
printf("输出复制后的字符串b:");
printf("%s", b);
return 0;
}
运行结果如图:
希望对题主有所帮助,望采纳!
#include<stdio.h>
#include<string.h>
int main()
{
int i,j,k,h;
char a[] = { " this is a copyed string\n" }, b[200],*p_a,*p_b;
p_a = a;
p_b = b;
int len=strlen(a);
for(h=0;h<len;h++)
{
*(p_b+h)=*(p_a+h);
}
//for (; *p_a != '\0'; p_a++, p_b++)//比较的是地址指向的内容
// *p_b = *p_a;
//*(p_b+h) = '\0';
printf("copy?:\n");
// for (i = 0; *(p_b+i)!= '\0'; i++)
//printf("%c", b[i]);///第一个
//printf("%s", b);//第二个
puts(p_b);
// puts(p_a);
for (p_b = b; *p_b != 0; p_b++)
//printf("%c", *p_b);//第三个
printf("\0");
return 0;
}