这应该是非常微不足道的。我是通过一个非常基本的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