2
1つの長い文字列を含むファイルを読み込み、これを文字列の配列に読み込むという小さな練習をしています。これまでのところ私が持っている:私はfgetsの問題をC++で持っています
char* data[11];
char buf[15];
int i = 0;
FILE* indata;
indata = fopen("somefile.txt", "r");
while(i < 11)
{
fgets(buf, 16, indata);
data[i] = buf;
i++;
}
fclose(indata);
somefile.txt:「aaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbaahhhhhbbbbdddddddddddddbbbbb」
などを...
これは問題を、15個の文字を読み込み配列にその文字列を追加し、次の15を取得します配列は常に最後の文字列と等しいので、最後の文字列が "ccccv"であれば、配列全体[data] = "ccccv"、data [1] = "ccccv"、data [2] = "ccccv"に。
なぜこのようなことが起こっているのか、それを行うためのより良い方法があるかどうかを知っていますか?ありがとう
データはポインタの配列なので、 'malloc' +' strcpy'または 'strdup'を使うべきです。 – mfontanini
strcpyは後ろに\ 0がなければ動作しません。少なくともstrncpyを使用する必要があります。最高でmemcpy。 – ypnos
right ...私はそれを逃した – mihai