#include<stdio.h>
#include<string.h>
#define MAX 80
#define LIN 20
char *s_gets(char *st,int n); //输入数组,没有换行符
char *mystrncpy(char *s1,char *s2,int n); //把s2数组添加到s1数组中,超过80或s2数组大于20截断数组,返回s1的值
int main(void)
{
char s1[MAX];
char s2[MAX];
while(s1[0]!='\0'||s2[0]!='\0') //循环输入俩个数组,
{
puts("请输入第一组字符串:");
s_gets(s1,MAX);
puts("请输入第二组字符串:");
s_gets(s2,MAX);
puts(s1);
puts(s2);
mystrncpy(s1,s2,LIN);
puts(s1);
}
return 0;
}
char *s_gets(char *st,int n)
{
char *ret_val;
ret_val=fgets(st,n,stdin);
if(ret_val)
{
while(*st!=’\n’&&*st!=’\0’)
st++;
if(*st==’\n’)
*st=’\0’;
else
while(getchar()!=’\n’)
continue;
}
return ret_val;
}
char *mystrncpy(char *s1,char *s2,int n)
{
char *s3;
int i;
int j;
s3=s2; //不会改变s2数组
for(i=0,j=strlen(s1);i<n;i++) //j表示s1数组末尾位置,
{
s1[j+i]=s3[i];
if((j+i)>=MAX){ //数组最大元素='\0'截断数组输入
s1[j+i]='\0';
break;
}
}
return s1;
}