如何在C中的二维char数组中找到一个char指针?

Dyl*_*lan 2 c pointers

嗨,所以我是C的新手.

基本上我要问的是:

所以我有一个二维char数组,它代表一个字符串列表(char array[size][20]).

然后我有另一个字符串,我代表一个char尖头(char *word).

我希望我的函数要做的是遍历我的数组中的每个字符串,如果它找到了单词return 1.

但是我对指针很困惑,所以我不确定如何写这个.我开始只使用for循环,遍历数组的行.然后if(word = array[i]) return 1.但这对我不起作用.

我希望这是有道理的,如果不是,我会再次尝试解释.我会非常感谢任何答案.我真的不需要代码.只是朝着正确的方向迈出了一步.

Ker*_* SB 5

假设您的数组由以空字符结尾的字符串组成(即长度最多为19的字符串),那么strcmp您的解决方案是:

#include <string.h>
#include <stddef.h>

size_t find_in_array(char array[][20], size_t size, char * word)
{
    for (size_t i = 0; i != size; ++i)
        if (strcmp(array[i], word) == 0)
            return i;

    return size;
}
Run Code Online (Sandbox Code Playgroud)

如果找到单词,则返回偏移量,size否则返回.

用法:

char array[3][20] = { "Hello", "World", "Jim" };

size_t i = find_in_array(array, 3, "Jim");  // returns "2"
Run Code Online (Sandbox Code Playgroud)

如果"i!= 3",则找到该单词.