使用标准C语言,将字符数组s2中的全部字符复制到在字符数组s1中。

不可以使用strcpy函数,复制完成后将s1的内容输出到屏幕上。要求先写出设计思路,然后再完成代码,代码可以在你选定的环境中编译、执行,写出执行结果。
请高手自己讲解一下,越详细越好,谢谢

设计思路:
1、定义2个大小相等的字符数组s1[N]和s2[N]
2、提示输入字符数组s2,输入字符数组s2
3、统计字符串s2的长度k
4、将字符数组s2的下标为0到k的元素赋值给s1
5、输出字符数组s1

程序:

#include<stdio.h>
#define N 100
void main()
{
char s1[N],s2[N];
int i,k=0;
printf("输入字符数组s2\n");
scanf("%s",s2);

for(i=0;s2[i]!='\0';i++)k++;

for(i=0;i<=k;i++)s1[i]=s2[i];
printf("%s\n",s1);
}

结果:
输入字符数组s2
engsing
engsing
Press any key to continue
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-06-03
本来想写一楼的,看到一楼写了,就改写指针的,我说说思路吧,定义两个字符数组,和两个指向字符数组的指针,分别取他们的地址,用指针输入一个字符数组,再用指针使录入数组赋值给未录入数组。
#include <stdio.h>
void main()
{char a[10],b[10];
char *p,*q;
p=a;/*将a首地址赋给p*/
printf("请输入一个字符串:\n");
scanf("%s",p);
for(p=a,q=b;*p!='\0';p++ ,q++)/*本人有意不用strlen();以免一楼误会*/
*q=*p;
*(q+1)='\0';/*指针不会将\0复制过去,因此人为复制*/
for(q=b;q<b+10;q++)/*这里已经包括\0,输出会自动结束*/
printf("%c",*q);
}

测试错误,楼主,这样写是错的,不好意思…

参考资料:如果您的回答是从其他地方引用,请表明出处

第2个回答  2010-06-02
可以把字符数组s2的每一个字符一个一个的复制到s1对应的位置上
#include"stdio.h"
#include"string.h"
main()
{
char s1[100],s2[100];
int a,i;
gets(s2);
a=strlen(s2);
for(i=0;i<a;i++)
{s1[i]=s2[i];
printf("%c",s1[i]);}
}
第3个回答  2010-06-03
void copyString(char* s1,char* s2)
{
if(s1==NULL || s2==NULL)//判断两个字符串是否为空
return;

while ((*s2++ = *s1++)!='\0'); //复制,直到\0结束

printf("%s",s1);//输出s1到屏幕
}本回答被网友采纳
第4个回答  2010-06-04
void main()
{
char s1[80],s2[40];
int x=0,y=0;
scanf("%s",s1);
scanf("%s",s2);
while(s1[x]!='\0')
x++;
while(s2[y]!='\0')
{
s1[x]=s2[y];
x++;
y++;
}
s1[x]='\0';
printf("%s",s1);
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网