c语言指针的编程题
编写程序,利用指针运算,将字符串str1的内容赋给字符串str2(程序中不得使用字符串处理函数)main(){charstr1[10],str[10],*p;inti;p...
编写程序,利用指针运算,将字符串str1的内容赋给字符串str2(程序中不得使用字符串处理函数)
main()
{char str1[10],str[10],*p;
int i;
p=str1;
for(i=0;i<10;i++)
scanf("%c",&str1[i]);
for(i=0;*p;i++,p++)
str2[i]=*p;
str2[i]='\0';
for(i=0;i!='\0';i++)
printf("%c",&str2[i]);}
请问这个程序错在哪里,请大家帮我指出来下。 展开
main()
{char str1[10],str[10],*p;
int i;
p=str1;
for(i=0;i<10;i++)
scanf("%c",&str1[i]);
for(i=0;*p;i++,p++)
str2[i]=*p;
str2[i]='\0';
for(i=0;i!='\0';i++)
printf("%c",&str2[i]);}
请问这个程序错在哪里,请大家帮我指出来下。 展开
5个回答
展开全部
#include<stdio.h>
void
main()
{
char
str1[10],str2[10],*p;
int
i;
p=str1;
for(i=0;i<9;i++)
scanf("%c",&str1[i]);
str1[i]=
'\0';////该在str1[i]最后加一个'\0'要下面的结束for(i=0;*p;i++,p++)
就找不到结束符,所以后面就有乱码“烫烫”
for(i=0;*p;i++,p++)///你可以用i<10来直接截取字符的前十位是可以的但是只是截取,其实真是的str2仍然后面有乱码
str2[i]=*p;
str2[i]='\0';
printf("%s\n",str2);
}
void
main()
{
char
str1[10],str2[10],*p;
int
i;
p=str1;
for(i=0;i<9;i++)
scanf("%c",&str1[i]);
str1[i]=
'\0';////该在str1[i]最后加一个'\0'要下面的结束for(i=0;*p;i++,p++)
就找不到结束符,所以后面就有乱码“烫烫”
for(i=0;*p;i++,p++)///你可以用i<10来直接截取字符的前十位是可以的但是只是截取,其实真是的str2仍然后面有乱码
str2[i]=*p;
str2[i]='\0';
printf("%s\n",str2);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1.scanf赋值时把数组填满了,哪有结束标志。赋值给str1时应该用个数控制而不是结束标记。最后那个打印也有问题,for里面判断语句有问题,输出语句输出的是地址,你却用%c,是不是笔误啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是不是这个?
printf("%c",&str2[i]);
要把&去掉。
printf("%c",&str2[i]);
要把&去掉。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
程序中的str2未定义!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
for(i=0;str2[i]!='\0';i++)
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询