2

こんにちは、私はCにかなり慣れていません。

基本的に私が求めているのはこれです:

charしたがって、文字列のリスト ( ) を表す2 次元配列がありますchar array[size][20]

char次に、尖った ( )として表す別の文字列がありますchar *word

関数に実行させたいのは、配列内の各文字列を調べて、 to という単語が見つかった場合return 1です。

しかし、私はポインターについてかなり混乱しているので、これを書く方法がわかりません。配列の行をたどって、for ループを使用することから始めました。そしてif(word = array[i]) return 1。しかし、これは私にはうまくいきません。

これが理にかなっていることを願っています。そうでない場合は、もう一度説明してみます。そして、どんな答えでも大歓迎です。コードは本当に必要ありません。正しい方向への一歩です。

4

5 に答える 5

5

配列がnull で終わる文字列 (つまり、長さが最大 ​​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;
}

これは、単語が見つかった場合はオフセットを返し、sizeそうでない場合はオフセットを返します。

使用法:

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

size_t i = find_in_array(array, 3, "Jim");  // returns "2"

「i != 3」の場合に単語が見つかりました。

于 2012-10-30T22:50:29.160 に答える
2

あなたの与えられた比較は、ポインター自体の値が等しいことを比較するだけであり、ポインターが指しているメモリの内容が同じであるということではありません(また、あなたの例では、単一の等号は比較ではなく代入です)。

あなたの配列は、私が走り書きした次の図のように見えます。 文字の配列の配列

あなたがしたいことは、strcmp または他のそのような関数を使用して、単語変数が指すメモリが配列内の個々の文字列のいずれかと等しいことを比較することです。

ポインターを使用する言語では、ここで行ったようにメモリを引き出すのに役立ちます。また、ポインターはメモリの実際の内容ではなく、場所を特定する方法にすぎないことを覚えておいてください。

于 2012-10-30T22:52:31.027 に答える
1

これは C++ ではなく C です。を使用==すると、文字列のアドレスが数値で比較され、内容は比較されません。文字列が等しいかどうかをテストするにstrcmp()は、引数が同じ文字列である場合に 0 を返す関数を使用します。

int has_word(const char *word, const char list[][20], size_t n)
{
    int i;
    for (i = 0; i < n; i++) {
        if (strcmp(word, list[i]) == 0) {
            return 1;
        }
    }
    return 0;
}

word必要に応じて、文字列の配列の最初のn要素の中に 0 で終わる文字列が見つかった場合、この関数は 1 を返しlistます。

于 2012-10-30T22:51:05.660 に答える
0

string.h特にの関数を見てくださいstrstr()

ウィキペディアには、 C String Handlingに関するかなりまともなページがあります。

于 2012-10-30T22:44:16.303 に答える
0

最初word = array[i]は、文字列を比較する良い方法ではありません。使用する必要がありますstrcmp: http://www.cplusplus.com/reference/clibrary/cstring/strcmp/

私はちょうどあなたの質問によく似た別の質問に答えました。この質問を見てください。いくつかのアイデアが得られるかもしれません: Returning and printing string array index in C

于 2012-10-30T22:49:55.740 に答える