使用指针在数组中查找字符串

时间:2017-11-16 07:29:20

标签: c

我有一个问题,我需要使用指针测试C中的其他数组中是否存在字符串。我尝试了这个,但它不起作用,如果有人有任何建议......这是我试过的代码,提前谢谢你......

/* Like the strstr() function. It returns a pointer to the first occurrence of the string aiguille in the string meule_de_foin.
 * @param meule_de_foin the string to search in
 * @param aiguille the string to find
 * @return a pointer to the first occurrence of the string aiguille in the string meule_de_foin if aiguille is in meule_de_foin, NULL otherwise
 */

const char * IMPLEMENT(indexOfString)(const char *meule_de_foin, const char *aiguille) {
    int isFound; isFound=0;
    int first; first=meule_de_foin;

    while(isFound==0){
        if(*aiguille=='\0' && *meule_de_foin=='\0'){
            isFound=1;
        } else if (*aiguille == *meule_de_foin){
            aiguille=aiguille+1;
            meule_de_foin=meule_de_foin+1;
        }else{
            isFound=2;
        }
    }

    if(isFound==1){
        return (first);
    }else{
        return(NULL);
    }
}

if(isFound==1){
    return (first);
}else{
    return(NULL);
}

1 个答案:

答案 0 :(得分:5)

您只测试两个字符串是否完全相等。

您需要在到达搜索字符串末尾时停止检查,即使您不在字符串末尾进行搜索。

如果找不到,则需要从下一个字符开始再次检查,并不断重复此操作,直到到达字符串的末尾。所以你需要围绕搜索循环的另一个循环。

int isFound = 0;
const char *first;
for (first = meule_de_foin; *first != '\0' && isFound != 1; first++) {
    isFound = 0;
    const char *search = aiguille;
    const char *cur = first;
    while (!isFound) {
        if (*search == '\0') { // End of search string
            isFound = 1;
        } else if (*search != *cur) { // Non-matching character, stop matching
            isFound = 2;
        } else { // Keep matching
            search++;
            cur++;
        }
    }
}

if (isFound == 1) {
    return first;
else {
    return NULL;
}