這應該是非常微不足道的。我是通過一個非常基本的C程序比較字符串運行:沒有頭文件的C函數
#include <stdio.h>
int strcmp(char *s, char *t);
int main()
{
printf("Returned: %d\n", strcmp("abc", "adf"));
return 0;
}
int strcmp(char *s, char *t)
{
printf("Blah\n");
while (*s++ == *t++)
{
if (*s == '\0')
return 0;
}
return *s - *t;
}
所以,我已經基本上實現我自己的strcmp函數的版本已經存在string.h中。當我運行上面的代碼時,我只看到0,1或-1的返回值(至少對於我的一小組測試用例)而不是實際的預期結果。現在我意識到這是因爲代碼沒有轉到我實現的strcmp版本上,而是使用了函數的string.h版本,但我很困惑,爲什麼這種情況即使在我沒有'包括適當的頭文件。
另外,看看它如何使用頭文件版本,編譯代碼時不應該得到'多個實現'錯誤(或沿着這些行的東西)?
你最後一次測試'* s ++ == * t ++'可能會失敗,仍然會增加你的指針......是你想要的嗎? – Benoit 2011-05-08 08:03:47
是的,你說得對。最後一行應該是返回 *( - s) - *( - t) – 2011-05-08 18:22:20