Im делает небольшое упражнение для чтения файла, который содержит одну длинную строку и загружает это в массив строк. До сих пор у меня есть:У меня проблема с 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» весь массив, данные [0] = «ccccv», данные [1] = «ccccv», данные [2] = «ccccv» и т. д. на.
Кто-нибудь знает, почему это происходит, и есть ли лучший способ сделать это? Спасибо
Он должен использовать 'malloc' +' strcpy' или 'strdup', поскольку данные представляют собой массив указателей. – mfontanini
Добавьте к этому, что strcpy не будет работать без конечного \ 0; по крайней мере strncpy следует использовать; в лучшем случае memcpy. – ypnos
Право ... я пропустил это – mihai