#include"stdio.h"
为明水等地区用户提供了全套网页设计制作服务,及明水网站建设行业解决方案。主营业务为成都网站建设、成都网站设计、明水网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
int main()
{ char a[100],b[100];
int i;
printf("输入字符串a\n");
gets(a);
for(i=0;a[i]!='\0';i++)
b[i]=a[i];
b[i]='\0';
puts(b);
}复制不是这样吗?
# include stdio.h
void strcopy( char str1[], char str2[])
{ int i;
for(i=0;str[i]!= '\0';i++)
{ str1[i]=str2[i];
s1[i]='\0';
}
}
void main()
{char str1[20];str2[20];
scanf("%s%s",str1,str2);
printf("%s",strcopy(str1,str2));
}
target[m][n]=source[m][n];
最明显错在这,应该为i、j循环。此外,在vc下你的代码过不了,数组大小不定编辑器无法分配空间。
不可以 num2[]=num1[]
用MEMCPY
#include iostream
using namespace std;
int main()
{
int a[10];
int b[10]={0,1,2,3,4,5,6,7,8,9};
memcpy(a,b,10*sizeof(int));
int i;
for (i=0;i10;i++)
couta[i]endl;
return 0;
}
#includestdio.h
#includestring.h
main(){
int i,x;
char a[10]; //这里应该定义为10个长度,考虑越界,最好定义为16
char b[10];
printf("请输入字符串a:\n");
gets(a);
printf("请输入字符串b:\n");
gets(b);
printf("把a复制到b后字符串b为:\n");
strcat(a,b); //这里应该用字符串连接函数,将b连接到a的后面
for(i=0;i10;i++)
printf("%c",a[i]);//这里输出的应该为字符组a才得到结果
printf("\n");
getch();
}
现在我来回答你的程序运行后b[6]是空而不是w,因为你用函数strcpy把数组a的5个q和一个‘\0’复制到b中,并将其前面的6个w覆盖,也就是说这时候的b储存为qqqqq\0wwww,然后你用%c输出,第六个当然是\0也就是空了,如果你用%s输出只输出前5个q,因为%s输出遇到‘\0’就结束。
最后来说说改正,前面已经说了,如果要输出qqqqqwwwww,就要用到字符连接函数strcat了,将b连接到a的后面,而并不是覆盖,第六个并不是\0了,而是b的第一字符w,这样也能得到结果但是会越界,并不是最好的方法,考虑用函数做比较好,在这里我就不说了。
*(a2+i)是数组a2[]的第i+1个元素
*a2+i只是数组a2[]的第一个元素的值加上i
你拿这个去赋值当然会便宜错误
就好比你定义一个int
a=5;
你可以用a去重新赋值,但你不能用a+1去赋值一样
虽然你用
*(a2+i)
=
*a1+i;去编译是不会报错的
但是得不到你想要的结果