我有以下功能:C:幫助與自定義strpos()函數
int strpos(const char *needle, const char *haystack)
{
int neLen, haLen, foundPos, nePos, i;
char temp;
neLen = strlen(needle);
haLen = strlen(haystack);
if(haLen < neLen)
return -1;
nePos = 0;
foundPos = -1;
i = 0;
while((temp = *haystack++) != '\0'
&& (i < (haLen-neLen+1) || foundPos > -1)
&& nePos < neLen)
{
if(temp == *needle+nePos)
{
if(nePos == 0)
foundPos = i;
nePos++;
}
else
{
nePos = 0;
foundPos = -1;
}
i++;
}
return foundPos;
}
它可以正常工作,當我搜索了單個字符:
printf("Strpos: %d\n", strpos("a", "laoo")); // Result: "Strpos: 1"
但它不恰當地使用更長的字符串:
printf("Strpos: %d\n", strpos("ao", "laoo")); // Result: "Strpos: -1"
什麼問題?
獎勵問題:是while
循環正確地分成多行?接受的方式是什麼?
編輯:strlen()
自然是一個自定義函數,它返回字符串的長度。這工作正常。
最差。碼。永遠。 – Myforwik 2010-12-02 11:28:29
這是作業嗎,還是我們真的獲得獎勵代表回答獎金問題? – MAK 2010-12-02 11:29:59