This question already has answers here:
Closed 4 years ago.
What is size_t in C?
(12个答案)
假设我想让一个函数
int indexOf ( char * str, char c )
{
   // returns the index of the chracter c in the string str
   // returns -1 if c is not a character of str
  int k = 0;
  while (*str)
  {
      if (*str == c) break;
      else ++str;
  }
  return *str ? k : -1;
}

但我想让它尽可能可靠例如,如果最大的int保证大于或等于字符数组的最大大小,则只适用于上述。我怎样才能用纯C来覆盖所有的碱基?

最佳答案

size_t
不,说真的size_t是标准的C类型它在<stddef.h>中定义。
(这是对“C中“大小”的等价物是什么?”的回答)
对于您编写的确切函数,strchr将更适合-调用方可以这样使用它:

const char* str = "Find me!find mE";
char* pos = strchr(str, '!');
if(pos) // found the char
{
    size_t index = (pos - str); // get the index
    // do the other things
}
else
{
    // char not found
}

所以,一般来说,如果您想在用户提供的数组中找到某些内容,那么返回指针在C语言中是最常用的。
您可以返回ssize_t(其中包括size_t-1的所有可能值),但它不是标准的C,所以我不推荐它。我提这件事只是为了完整。

07-27 14:00