我找到了这个实现char * strchr (const char *string, int c);:
for (;;)
if (*string == c)
return (char *) string;
else if (*string == '\0')
return NULL;
else
string++;
Run Code Online (Sandbox Code Playgroud)
但对我来说,这相当于执行以下操作,这将更容易阅读:
while (*string != c && *string != '\0')
string++;
return (*string == c) ? ((char *) string) : (NULL);
Run Code Online (Sandbox Code Playgroud)
我认为libc有一些原因可以实现第一个.但任何看法背后的原因是什么?
是的,while(1)当您将警告级别提高到最大值时,Visual Studio不喜欢(特别是如果您要求将警告视为错误),但是可以for(;;).