数组中提取元素(C语言)

来源:百度知道 编辑:UC知道 时间:2024/09/23 11:15:53
编写取子字符串函数void fun(char s1[],char s2[],int m,int n),其作用是将字符数组s2中从第m个字符开始的共n个字符拷贝到数组s1中;若s2中剩余字符不足n个,则取到尾部。程序运行时,当输入"abcd123"、4,3时应输出"d12";当我们输入"abcd123"、4,6时应输出"d123"。注意,这里是将1作为起始计数。
#include<stdio.h>
void fun(char s1[],char s2[],int m,int n)
{
}
main()
{static char a[100],b[100];
int s,len;
void fun(char s1[],char s2[],int m,int n);
puts("ENTER A STRING:");
gets(a);
puts("ENTER STARTING POSITION AND LENGTH:");
scanf("%d,%d",&s,&len);
fun(b,a,s,len);
printf("THE SRBSTING IS:%s\n",b);
}
注意static char a[100],b[100];
数组是static型的,一般的答案都不能得满分,仅能得36分,满分60.

#include "stdio.h"

void fun(char s1[],char s2[],int m,int n)
{
int i=0,j=0;
while(s2[i]) i++;//得到s2的长度,也可以用i=strlen(s2);
if(i<m) return;//防止出现m超过s2长度的情况
for(i=m-1;i<m+n-1 && s2[i];i++,j++)
{
s1[j]=s2[i];
}
s1[j]=0;
}

void main()
{
static char a[100],b[100];
int s,len;
void fun(char s1[],char s2[],int m,int n);
puts("ENTER A STRING:");
gets(a);
puts("ENTER STARTING POSITION AND LENGTH:");
scanf("%d,%d",&s,&len);
fun(b,a,s,len);
printf("THE SRBSTING IS:%s\n",b);
}

void fun(char s1[],char s2[],int m,int n)
{
char *p = s2;
int l = 0;

while (*p++) ++l;

if (m <= l)
{

int i = 0;

while ((i < n) && (s1[i] = s2[i+m-1])) ++i;
}
else
s1[0] = '\0';
}

#include<st