Я пытаюсь написать какой-нибудь код, который откроет файл, построчно прочитает его содержимое и сохранит каждую из этих строк в массиве.
Сначала я открываю файл и подсчитываю количество строк, каждая из которых имеет фиксированную длину, поэтому я просто делаю это:
char buf2[LINE_LENGTH];
int in2 = open("toSend2", O_RDONLY);
int number_of_lines = 0;
for (;;)
{
char* p2 = buf2;
int count = read (in2, p2, LINE_LENGTH);
if (count < 0)
{
printf("ERROR");
break;
}
if (count == 0) break;
number_of_lines++;
printf("count: %d \n",count);
printf("File 2 line : %s", p2);
printf("\n");
}
close (in2);
Пока это работает хорошо, number_of_lines - это действительно количество строк в файле "toSend2", и каждый из моих printf - это строки, содержащиеся в этом файле.
Теперь, с количеством строк, я создаю массив строк, а затем снова просматриваю весь файл, но на этот раз я хотел бы сохранить каждую из строк в массиве (возможно, есть лучший способ найти количество строк в файле, но все, что я пробовал, провалилось!)
char * array[number_of_lines];
int b=0;
int in3=0;
in3 = open("toSend2", O_RDONLY);
for (;;)
{
char* p3 = buf3;
int count = read (in2, p3, LINE_LENGTH);
if (count < 0)
{
printf("ERRORRRRRR");
break;
}
if (count == 0) break;
array[b] = p3;
b++;
printf("count: %d \n",count);
printf("FILE 2 LINEEEEEE : %s", p3);
printf("\n");
}
close(in3);
Это, конечно, не работает: каждый из моих printf - это правая строка плюс последняя строка файла, например, первый printf будет:
ФАЙЛ 2 LINEEEEEEE: "1-я строка файла"
"последняя строка файла"
И после этого для цикла for, когда я отслеживаю содержимое моего массива, каждый элемент в нем является просто последней строкой файла. Я думаю, это потому, что я просто помещаю один и тот же указатель (указывающий на другую строку в этот момент) в массив каждый раз, но в конце он будет указывать на последнюю строку, поэтому все будет последней строкой.
Как бы я решил мою проблему?
p.s .: Я только что начал C, поэтому, пожалуйста, не думайте, что я знаю об этом даже простые вещи: (