主题:[讨论]C语言字符串求子串
我在求一个字符串的子串时遇到了一个棘手的问题。函数代码如下:
void subString(char *source,char *target,int start,int len){
char *p = source + start,*q = target ,*p_end = source+ start +len;
if(start+len<=strlen(source))
while(p<p_end)
*q++ = *p++;
*q = '\0';
}
这个函数在一般情况下是对的,但是将函数调用格式变成:subString(string,string,4,2)时(这里假设string="helloworld!")。编译器(vs2008)会说这里对字符数组string访问出错而vc6.0则直接跳出程序执行。请问这是什么原因?应该如何改动这个函数,使得上述调用格式成立?
void subString(char *source,char *target,int start,int len){
char *p = source + start,*q = target ,*p_end = source+ start +len;
if(start+len<=strlen(source))
while(p<p_end)
*q++ = *p++;
*q = '\0';
}
这个函数在一般情况下是对的,但是将函数调用格式变成:subString(string,string,4,2)时(这里假设string="helloworld!")。编译器(vs2008)会说这里对字符数组string访问出错而vc6.0则直接跳出程序执行。请问这是什么原因?应该如何改动这个函数,使得上述调用格式成立?