0

char 配列の配列内の要素に文字列値 (char *) を割り当てようとしています。私の問題は、割り当てを行うことができますが、必要な特定の要素ではなく、最後に読み取った値をすべての要素に配置することです。私のコードは次のようになります。

int   wordListIterator = 0;

int main(int argc, char **argv) {

    FILE *fp = fopen(argv[1], "r");

    int lineCount = 0;

    char line[80];
    while (fgets(line, sizeof(line), fp) != 0) {
    parseLine(line, strlen(line), lineCount);
    lineCount++;
    }
    fclose(fp);
} // end main

void parseLine(char * myLine, int stringLength, int myLineCount) {

    if (isspace(myLine[1])) {
        int i;
    for (i = 0; i < stringLength; i++) {
        Puzzle[myLineCount][i] = myLine[i];
    }

} else
if (isspace(myLine[1]) == 0) {
     Wordlist[wordListIterator] = myLine;
    wordListIterator++;
}
}

私の出力では、最後に読み取った単語で Wordlist[] がいっぱいになります。これは単語検索パズル用です。Puzzle[][] 割り当てはうまく機能するので、どこが間違っているのかわかりません。

4

1 に答える 1

1

を使用して行をコピーする必要がありstrdupます。そうしないと、毎回行を上書きし、すべての値が同じ文字列へのポインターになります。その文字列には最後の入力が含まれるので、それらはすべて最後の入力を指すことになります。

実際の文字を一度に 1 つずつコピーしているため、「パズル」の割り当ては問題なく機能します。

于 2014-02-28T02:01:14.057 に答える