Привет у меня есть следующий код ниже, где я пытаюсь получить все строки файла в массив ... например, если в файле data.txt у меня есть следующее:
первая строка
вторая строка
тогда в приведенном ниже коде я хочу получить в массив данных следующее:
data [0] = "первая строка";
данные [1] = "вторая строка"
Мой первый вопрос: в настоящее время я получаю "Ошибка сегментации" ... Почему?
Именно я получаю следующий вывод:
Количество строк: 7475613
Ошибка сегментации
Мой второй вопрос: есть ли лучший способ сделать то, что я пытаюсь сделать?
Спасибо !!!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char* argv[])
{
FILE *f = fopen("data.txt", "rb");
fseek(f, 0, SEEK_END);
long pos = ftell(f);
fseek(f, 0, SEEK_SET);
char *bytes = malloc(pos);
fread(bytes, pos, 1, f);
int i =0;
int counter = 0;
for(; i<pos; i++)
{
if(*(bytes+i)=='\n') counter++;
}
printf("\nNumber of lines is %d\n", counter);
char* data[counter];
int start=0, end=0;
counter = 0;
int length;
for(i=0; i<pos; i++)
{
if(*(bytes+i)=='\n')
{
end = i;
length =end-start;
data[counter]=(char*)malloc(sizeof(char)*(length));
strncpy(data[counter],
bytes+start,
length);
counter = counter+1;
start = end+1;
}
}
free(bytes);
return 0;
}
Первая строка data.txt в этом случае не '\ n', это: «23454555 6346346 3463463».
Спасибо!