当我尝试查找数组中字符串部分的长度时,为什么我的 C 代码崩溃了?

问题描述 投票:0回答:1

我的代码每当到达长度线时就会崩溃。有谁知道为什么吗?

*find_in_aray(const char *arr[], const char *start) {
    for (int i = 0; arr[i] != NULL; i++) { 
        const char *check = arr[i];
        int length = strspn(arr[i], start);
        if (check[length] == '%') {
            const char *value = &check[length + 1];
            return value;
        }
    }  
    return NULL;
}

我希望代码能够运行并为我提供数组中符合列出条件的字符串的后半部分。每个字符串都有字符,然后是“%”,然后是更多字符。 start 表示指向我试图查找的数组中一个字符串的左半部分的第一个字符的指针。 Value,我返回的是后半部分。

arrays c pointers crash string-function
1个回答
0
投票
const char* find_in_array(const char *arr[], const char *start) {
    for (int i = 0; arr[i] != NULL; i++) {
        const char *check = arr[i];
        int length = strlen(start);
        
        if (strncmp(check, start, length) == 0 && check[length] == '%') {
            const char *value = &check[length + 1];
            return value;
        }
    }
    return NULL;
}

我使用 strncmp 而不是 strspn。 strncmp 在这里更合适,因为它直接将字符串的起始部分与 start 参数进行比较。

© www.soinside.com 2019 - 2024. All rights reserved.