You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言数组查找时key不存在则输出错误提示的实现问题

你现有的find_element函数已经做了找不到元素时返回(size_t)-1的标记逻辑,不需要修改函数内部,也不需要用到continue、goto语句,只要在调用函数后判断返回值即可,修改后的代码如下:

#include <stdio.h>

size_t find_element(size_t len, int arr[len], int key)
{
    size_t pos = (size_t)-1;

    for (size_t i = 0; i < len; ++i)
    {
        if (arr[i] == key)
        {
            pos = i;
            break;
        }
    }
    return pos;
}

int main(void)
{
    size_t len = 7;
    int arr[] = {0, 1, 2, 3, 4, 5, 6};
    int key = 5;
    // 先接收查找结果
    size_t res = find_element(len, arr, key);

    // 根据返回值判断是否找到元素
    if (res == (size_t)-1) {
        printf("Key not in the array\n");
    } else {
        printf("IDX: %zu \n", res);
    }

    return 0;
}

原理解释

  • size_t是无符号整数类型,(size_t)-1会被转换为size_t能表示的最大值,正常数组的下标最大为len-1,不可能等于这个值,所以用它作为元素不存在的标记是安全的。
  • 不需要在循环内部加打印逻辑,只要循环结束后通过pos的值判断是否找到即可,你之前尝试的循环内加else打印、goto的方案都是多余的。
  • 如果你需要把提示打印逻辑放到find_element函数内部,也可以在return前加判断:
size_t find_element(size_t len, int arr[len], int key)
{
    size_t pos = (size_t)-1;

    for (size_t i = 0; i < len; ++i)
    {
        if (arr[i] == key)
        {
            pos = i;
            break;
        }
    }
    if (pos == (size_t)-1) {
        printf("Key not in the array\n");
    }
    return pos;
}

内容的提问来源于stack exchange,提问作者caSino_Mafia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 18:18:04