1

我想知道是否可以安全地进行以下迭代以查找数组中第一次出现的 str 或者是否有更好的方法。谢谢

#include <stdio.h> 
#include <string.h>

const char * list[] = {"One","Two","Three","Four","Five"};

char *c(char * str) {
    int i;
    for (i = 0; i < 5; i++) {
        if (strstr(str, list[i]) != NULL) return list[i];
    }
    return "Not Found";
}
int main() {
    char str[] = "This is a simple string of hshhs wo a char";

    printf("%s", c(str));
    return 0;
}
4

1 回答 1

5

是的,它是“安全的”,因为上面的代码可以工作并且没有简单的方法可以破解它。

然而,一点点修复会更强大:

  1. 返回const char*fromc()以便调用者无法修改结果字符串。所有这些字符串都是恒定的。
  2. 使用幻数来计算列表中元素的数量,而不是幻数5,如果数组更改会变得无效。sizeof(list)/sizeof(list[0])
于 2010-03-29T23:42:12.610 回答