我有一个问题,我需要使用指针测试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);
}
答案 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;
}