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