您的位置:首页 > 编程语言 > C语言/C++

[置顶] C语言,从字符串中提取一个字符串,int substr(char dst[], char src[],int start,int len)目标是:从src数组的起始位置开始向后偏移star

2016-10-26 18:24 567 查看
方法一:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include<assert.h>
int strlen(char * string)
{
int length;
for(length=0;*string++!='\0';)
length+=1;
return length;
}

int substr(char dst[], char src[],int start,int len)
{
char* sc = src+start;
int n = strlen(sc);
int i = 0;
int **ret=NULL;
assert(dst != NULL );
assert(src != NULL );
if(n < len)
{
len = n;
}
while(len)
{
dst[i] = sc[i];
len--;
i++;
}
dst[i] = '\0';
}
int main()
{
char string[]="hello-my-college";
char string1[100]={0};
int ret=0;
int num=0;
int count=0;
printf("please the len and the num is:\n");
scanf("%d%d",&num,&count);
ret=substr(string1,string,num,count);
printf( "目的数组长度 : %d \n",count);
printf( "目的数组为: %s \n",string1);
system("pause");
return 0;
}


方法二:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include<assert.h>
#include<math.h>
int strlen(char * string)
{
int length;
for(length=0;*string++!='\0';)
length+=1;
return length;
}

int substr( char dst[], char src[], int start, int len )
{
char *temp = dst;
int dst_len = 0;
int src_len = strlen(src);
int i=0;
assert( dst != NULL && src != NULL );
if( start<0 || len<=0 || src_len < start )
printf( "提取位置或字符个数不符合要求 !\n" );
for( i=0; i<start; i++ )
src++;
while( dst_len < len && (*temp++ = *src++) != '\0' )   // 若把比较长度放在后面,就会多复制一个字符
dst_len++;
*temp = '\0';
return dst_len;
}
int main()
{
char string[]="hello-my-college";
char string1[100]={0};
int ret=0;
int num=0;
int count=0;
printf("please the len and the num is:\n");
scanf("%d%d",&num,&count);
ret=substr(string1,string,num,count);
printf( "目的数组长度 : %d \n",count);
printf( "目的数组为: %s \n",string1);
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐