c语言的指针编程题
编写程序,利用指针运算,将字符串str1的内容赋给字符串str2(程序中不得使用字符串处理函数)main(){charstr1[10],str2[10],*p;inti;...
编写程序,利用指针运算,将字符串str1的内容赋给字符串str2(程序中不得使用字符串处理函数) main() {char str1[10],str2[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;str2[i]!='\0';i++) printf("%c",str2[i]);} 请问为什么for(i=0;*p;i++,p++) 中写*p是错的,而写i<10是正确的,说下理由
展开
1个回答
展开全部
#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);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询