6. Self-realization prototype library functions strstr

// 在字符串src中查找第一次出现字符串sub的位置
char *strstr(char *src,char *sub)
{
    // 参数检测
	if((src == NULL) || (sub == NULL)){
		return NULL;
	}
	
	// 参数保护,避免偏移后出现错误
	char *strx = src;
	char *suby = sub;
	
	// 检测主体
	//while(*strx != '\0'){  // 此处一个条件就足够了
	//while(*strx || *suby){ // 省略条件判断\0	
	while(*strx || *suby){   // 此处检测完sub后直接退出,效率比上边高一些	
	
		if(*strx++ != *suby++){ // 检测strc字符是否与suby字符相等
			suby = sub;  // 避免中途断开检测
		}
	}
	
	if(*suby == '\0'){ // suby做地址偏移 ,此处为退出条件
		return sub;    // 此处应将返回输入地址
	}
			
	return NULL;
}
Published 10 original articles · won praise 0 · Views 528

Guess you like

Origin blog.csdn.net/TurboTab/article/details/104667479