[置顶] 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; }
相关文章推荐
- [置顶] C语言,从字符串中提取一个字符串,int substr(char dst[], char src[],int start,int len)
- 编写一个函数,它从一个字符串中提取一个子字符串。函数原型如下: Int substr(char dst[], char src[],int start, int len) {} 目标是:从src数组
- 从src数组起始位置向后偏移start个字符的位置开始,最多复制len个非NUL字符到dst数组。
- 编写一个函数,删除字符串中的一段字符,函数原型为: int fun(char *p,int start,int end); 返回值为删除字符数, start 开始位置,end 结束位置。
- int substr( char dst[], char src[], int start, int len )
- Linux下用C语言将一个字符串格式(char*)的MAC地址转换为十六进制数组
- Linux下用C语言将一个字符串格式(char*)的MAC地址转换为十六进制数组
- Linux下用C语言将一个字符串格式(char*)的MAC地址转换为十六进制数组
- c语言 char*类型作为中间变量将许多字符串保存到一个数组的问题
- 程序猿之---C语言细节1(==与=、函数指针、数组字符串printf、int ((b));、char b =‘abcd’)
- 编写一个字符串复制函数mystrcopy(char*s1,char*s2,int m),将字符串s2中从第m个开始全部字符都复制到s1中
- 当array是一个从0开始的连续数组时,json_encode出来的结果是一个由[]括起来的字符串
- 【我解C语言面试题系列】010 从相应位置开始删除指定字符串的相应个字符
- C语言中,利用宏定义一个字符串和字符数组定义的字符串其末尾都会自动添加\0字符
- 编写一个函数 char *strfind(char *s, char *t),用于查找字符串t在字符串s中最右边出现的位置,如果没有找到则返回NULL.
- 利用Collections工具类查找一个字符串在字符串数组里的位置即其角标
- c语言库函数【string.h】之 substr_(char *dest, const char* src, unsigned int start, unsigned int len)
- C语言补漏(1)--- char到int赋值的一个陷阱
- 完全颠倒一个字符串 和 数组按照中间的位置进行交换
- c语言库函数【string.h】之strncpy_(char* dst,const char* src,int count)