【问题标题】:array iteration strstr in cc中的数组迭代strstr
【发布时间】:2010-03-29 23:36:29
【问题描述】:

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

【问题讨论】:

    标签: c arrays iteration strstr


    【解决方案1】:

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

    不过,稍作修正会更稳健:

    1. c() 返回const char*,这样调用者就不能修改结果字符串。所有这些字符串都是常量。
    2. 使用sizeof(list)/sizeof(list[0]) 来计算列表中元素的数量,而不是使用5 来计算列表中元素的数量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-10
      • 1970-01-01
      • 1970-01-01
      • 2013-01-23
      • 1970-01-01
      • 2021-05-22
      • 2010-11-20
      • 1970-01-01
      相关资源
      最近更新 更多