Tengo un problema con mi progtwig de C Es un argumento de línea de comando para buscar una cadena de caracteres desde el archivo de texto y generar la línea que comenzó con el carácter de entrada del usuario sin usar strstr (). Está bien, pero hay un problema. Quiero mostrar todo el archivo cuando el carácter de búsqueda es NULL. Cuando hice esto, la salida se volvió diferente al uso de la función incorporada strstr (). ¿Puedes ayudarme? ¿Qué hay de malo con mi código, por favor?
#include #include #include char* MyStrstr(char* pszSearchString, char* pszSearchWord); int main(int argc, char* argv[]) { char szTemp1[10] = {0}; char szTemp2[10] = {0}; char * pszTemp1 = NULL; char * pszTemp2 = NULL; strcpy(szTemp1, "aabaaacaaaad"); strcpy(szTemp2, ""); pszTemp1 = MyStrstr(szTemp1, szTemp2); pszTemp2 = strstr(szTemp1, szTemp2); printf("%s\n",pszTemp1); printf("%s", pszTemp2); return 0; } char* MyStrstr(char* pszSearchString, char* pszSearchWord) { int nFcount = 0; int nScount = 0; int nSearchLen = 0; int nIndex = 0; char* pszDelString = NULL; if(pszSearchString == NULL) { return NULL; } if(pszSearchWord == ""){ return pszSearchString; } else { while(pszSearchWord[nSearchLen] != '\0') { nSearchLen++; } for(nFcount = 0; pszSearchString[nFcount] != '\0'; nFcount++) { if(pszSearchString[nFcount] == pszSearchWord[nScount]) { nScount++; } else { nScount = 0; } if(nScount == nSearchLen) { nIndex = (nFcount - nScount) + 1; pszDelString = pszSearchString + nIndex; } return pszDelString; } } return NULL; }
Reemplazar
if(pszSearchWord == "")
por
if (pszSearchWord[0] == 0)
pszSearchWord == ""
compara la dirección pszSearchWord
con la dirección del literal de cadena ""
y esas direcciones siempre son diferentes en su caso. No puedes comparar cadenas usando el operador ==
.