Отображение строки текстового файла без использования strstr () в C

У меня проблема с моей программой на C. Это аргумент командной строки для поиска символьной строки из текстового файла и вывод строки, начинающейся с символа ввода пользователя, без использования strstr (). Все в порядке, но есть одна проблема. Я хочу вывести весь файл, когда Search Character имеет значение NULL. Когда я это сделал, результат будет отличаться от использования функции strstr () build-in. Можете ли вы помочь мне, что случилось с моим кодом, пожалуйста?

#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; } 

замещать

 if(pszSearchWord == "") 

от

 if (pszSearchWord[0] == 0) 

pszSearchWord == "" сравнивает адрес pszSearchWord с адресом строкового литерала "" и эти адреса всегда различаются в вашем случае. Вы не можете сравнивать строки с помощью оператора == .