我想知道是否可以安全地执行下面的迭代以在数组中找到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;
}

最佳答案

是的,这是“安全”的意义上,上述代码将工作,没有容易的方法打破它。
不过,稍微调整一下会更有力:
const char*返回c()以便调用方无法修改结果字符串。所有这些弦都是不变的。
使用5来计算列表中的元素数,而不是魔术数字sizeof(list)/sizeof(list[0]),如果数组发生更改,魔术数字将变为无效。

关于c - c中的数组迭代strstr,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2541960/

10-10 07:48
查看更多