![]() |
#2
fulltimelink2020-05-11 07:35
|

#include"stdio.h"
void strcpy(char *q[],char *p[],int n){
int i;
int j,m;
for(i=0;i<n;i++)
q[i]=p[i];
for(j=0;j<n;j++)
printf("%s ",q[j]);
}
int main(void){
char *p[5]={"asdg","uewnngn","sngn","fhh","mngkkd"};
char *q[5];
strcpy(q,p,5);
return 0;
}
void strcpy(char *q[],char *p[],int n){
int i;
int j,m;
for(i=0;i<n;i++)
q[i]=p[i];
for(j=0;j<n;j++)
printf("%s ",q[j]);
}
int main(void){
char *p[5]={"asdg","uewnngn","sngn","fhh","mngkkd"};
char *q[5];
strcpy(q,p,5);
return 0;
}
第二种方法将指针p所指向字符的值一个一个拷贝给指针q.但却无法运行,是什么原因?代码如下:

#include"stdio.h"
void strcpy(char *q[],char *p[],int n){
int i;
int j,m;
for(i=0;i<n;i++)
for(m=0;m<100&&*(p[i]+m);m++)
*(q[i]+m)=*(p[i]+m);
for(j=0;j<n;j++)
printf("%s ",q[j]);
}
int main(void){
char *p[5]={"asdg","uewnngn","sngn","fhh","mngkkd"};
char *q[5];
strcpy(q,p,5);
return 0;
}
void strcpy(char *q[],char *p[],int n){
int i;
int j,m;
for(i=0;i<n;i++)
for(m=0;m<100&&*(p[i]+m);m++)
*(q[i]+m)=*(p[i]+m);
for(j=0;j<n;j++)
printf("%s ",q[j]);
}
int main(void){
char *p[5]={"asdg","uewnngn","sngn","fhh","mngkkd"};
char *q[5];
strcpy(q,p,5);
return 0;
}
[此贴子已经被作者于2020-5-11 02:47编辑过]