0

ファイルから読み取った文字を文字の配列に格納しようとしていますが、後続のすべての文字も格納してしまいます。このコードでは、配列を初期化するための構造体と関数を作成しました。

「Structures.h」より

typedef struct (
    int size;
    char *elem;
    } cvector;

「ユーティリティ.c」より

cvector make_cvector (int size)
    {   cvector temp;
        temp.size = size;
        temp.elem = calloc(size, sizeof(char));
        return temp;
    }

次に、「ab c」というテキストファイルを読み込もうとしています

本文で、私は次のように述べました:(nPtrはファイルを開くためのポインタです)

cvector NodeID;
NodeID = make_cvector(3);
for(i=0;i<3;i++){
        fscanf(nPtr,"%s", &NodeID.elem[i]);
        printf("%s ",&NodeID.elem[i]);
}

この結果は " abc " になりますが、このループの直後に別のループを入力しました。

for(i=0;i<3;i++)
        printf("%s ", &NodeID.elem[i]);

実際には「a」「b」と「c」を別々に保存したいのに、「abc bc c」になります。初期化またはポインタに問題がある可能性がありますが、オンラインで読み込もうとしても役に立ちませんでした。エラーはどこにありますか?ありがとうございました!

4

1 に答える 1

2

本当にやりたいことが単一の文字を印刷するときに、文字列を印刷しています。交換

printf("%s ",&NodeID.elem[i]);

printf("%c ",NodeID.elem[i]);

そしてそれはうまくいくはずです。

于 2013-10-07T03:26:48.377 に答える