邢冬冬最新作品2016:C语言编程题18

来源:百度文库 编辑:高校问答 时间:2024/04/28 04:27:44
编写函数char *fun(char *s1,char *s2,int n),将字符串s1中的前n个字
符复制到s2所指数组中.若s1不足n个字符,则用*在前端补齐至n个字符,写入s2中.
函数返回字符串s2的指针.例如,若输入:“abcd1234”和6,则输出“abcd12”;
若输入“abcd1234”和10,则输出“**abcd1234”. */

char *fun(char *s1,char *s2,int n)
{
}
main()
{char c1[80],c2[80];
gets(c1);
fun(c1,c2,6);
puts(c2);
puts(fun(c1,c2,30));
}

汗,刚才就写了,但没发,竟然已经有人在我之前了……

以下程序已通过调试
#include <stdio.h>
#include <string.h>
char *fun(char *s1,char *s2,int n)
{
int i,k,len;
len=strlen(s1);
k=0;
if (len<n) {k=n-len;memset(s2,'*',k);}
/*以下为复制*/
for (i=0;k<n;)
s2[k++]=s1[i++];
s2[k]=0;/*字符串结尾*/
return s2;
}
main()
{
char c1[80],c2[80];
gets(c1);
fun(c1,c2,6);
puts(c2);
puts(fun(c1,c2,30));
}

#include "stdio.h"
char *fun(char *s1,char *s2,int n)
{
int i,l;
l=strlen(s1);
for(i=0;i<n-l;i++)
s2[i]="*";
for(;i<n;i++)
s2[i]=*s1++;
s2[i]='\0';
return(s2);
}
main()
{char c1[80],c2[80];
gets(c1);
fun(c1,c2,6);
puts(c2);
puts(fun(c1,c2,30));
}