如果在数组中找不到键,则尝试添加错误消息

Trying to add error message in case key not found in array

我正在编写一段相当琐碎的代码;我正在尝试添加一条错误消息,用于在数组中搜索特定键。 (不是字面意义上的错误消息,只是一条打印语句,说明 key / searched int 不在数组中。)

下面是我为它写的函数和驱动代码

#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;

    printf("IDX: %zu ", find_element(len, arr, key));

    return 0;
}

如您所见,find_element returns 所需键在数组中的位置。但是,如果找不到密钥,我无法打印出错误消息。

我想在输出中实现的是:

'Key not in the array'

扫描整个阵列后,显示错误信息。

到目前为止,我已经尝试了以下操作:

else
{
    pos = i;
    printf("%zu is not the correct Index! \n", pos);
    continue;
}

这绝对行不通,因为它只是告诉用户哪些索引不正确。

我也试过 goto FAIL 语句,但也不是。

我怀疑我必须以其他方式使用 continue 语句,但不知道如何实现它。

你最初可以将-1赋值给pos。如果找不到密钥,它将保持为 -1 .

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

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

如果函数returns -1,表示没有找到key,否则函数会return key的index.

int main(void)
{
    size_t len = 7;
    int arr[] = {0, 1, 2, 3, 4, 5, 6};
    int key = 5;
    int result = find_element(len, arr, key);
    if(result==-1){
        printf("Key not in the array");
    }
    else{
    printf("IDX: %d ", result);
    }

    return 0;
}