int substr( char dst[], char src[], int start, int len )
2011-09-13 23:27
155 查看
#include <stdio.h> #include <string.h> #include <assert.h> int substr( char dst[], char const str[], int start, int len ); int main() { char dst[10]; char src[10] = "zhangleiy"; int len = substr( dst, src, 2, 3 ); printf( "目的数组长度 : %d \n", len); printf( "目的数组为 : %s \n", dst); return 0; } int substr( char dst[], char const src[], int start, int len ) { assert( dst != NULL && src != NULL ); char *temp = dst;; int dst_len = 0; int src_len = strlen( src ); if( start<0 || len<=0 || src_len < start ) printf( "提取位置或字符个数不符合要求 !\n" ); int i=0; for( i=0; i<start; i++ ) src++; //while( (*temp++ = *src++) != '\0' && dst_len < len ) while( dst_len < len && (*temp++ = *src++) != '\0' ) // 若把比较长度放在后面,就会多复制一个字符 dst_len++; *temp = '\0'; return dst_len; }
原答案源码如下:
/*
** Extract the specified substring from the string in src.
*/
int
substr( char dst[], char src[], int start, int len )
{
int
srcindex;
int
dstindex;
dstindex = 0;
if( start >= 0 && len > 0 ){
/*
** Advance srcindex to right spot to begin, but stop if we reach
** the terminating NUL byte.
*/
for( srcindex = 0;
srcindex < start && src[srcindex] != ’\0’;
srcindex += 1 )
;
/*
** Copy the desired number of characters, but stop at the NUL if
** we reach it first.
*/
while( len > 0 && src[srcindex] != ’\0’ ){
dst[dstindex] = src[srcindex];
dstindex += 1;
srcindex += 1;
len –= 1;
}
}
/*
** Null–terminate the destination.
*/
dst[dstindex] = ’\0’;
return dstindex;
}
相关文章推荐
- [置顶] C语言,从字符串中提取一个字符串,int substr(char dst[], char src[],int start,int len)目标是:从src数组的起始位置开始向后偏移star
- [置顶] C语言,从字符串中提取一个字符串,int substr(char dst[], char src[],int start,int len)
- 编写一个函数,它从一个字符串中提取一个子字符串。函数原型如下: Int substr(char dst[], char src[],int start, int len) {} 目标是:从src数组
- c语言库函数【string.h】之 substr_(char *dest, const char* src, unsigned int start, unsigned int len)
- C语言库函数学习【string.h】之substr_(char*dest, char* src, int start, int count)
- c语言库函数【string.h】之strncpy_(char* dst,const char* src,int count)
- 编写一个函数,删除字符串中的一段字符,函数原型为: int fun(char *p,int start,int end); 返回值为删除字符数, start 开始位置,end 结束位置。
- Jaxp---characters(char[] ch, int start, int length)
- int const * 、const int *、int *const、const char **与char **
- java中int,char,string之间的相互转换方法
- notifyItemRemoved,notifyItemRangeRemoved和notifyItemRangeChanged(int positionStart, int itemCount, Ob
- cocos2d int, float, double, const char* 转string
- MFC/C++/C中字符类型CString, int, string, char*之间的转换
- int and char conversion
- 关于int,String,char的一道面试题
- error C2556: 'void __thiscall ::sendCommand1(unsigned int,const char *,int)' : overloaded function differs only by return type f
- static_cast、dynamic_cast、reinterpret_cast和const_cast之间的区别,char int *p,int const*p
- java 彻底理解 byte char short int float long double
- C++ 中int,char,string,CString类型转换
- CString,int,string,char*之间的转换