Считывание файла в массив строк - C (СИ)
Формулировка задачи:
Добрый день, подскажите пожалуйста, где ошибка:
есть файл в котором строки
123 флоалф
124 жлфоавао
567 ждлофолвоп
1356 длождоп
мне нужно прочитать его в массив строк
т.е чтобы line[1] = 123 флоаф
line[2] = 124 жлфоавао и т.д
я делаю это так:
но программа компилируеца, но выдает ошибку при выполнении
Segmentation fault (core dumped)
Спасибо!
fp = fopen(argv[0], "r"); while(!feof(fp)){ fscanf(fp, "%s", line[i]); i++; }
Решение задачи: «Считывание файла в массив строк»
textual
Листинг программы
char lines[100][1000]; int nl = 0, nlmax = 100; int i; while (nl < nlmax && fgets(lines[nl], 1000, ifp)) { char *p = strrchr(lines[nl], '\n'); if (p) *p = '\0'; nl++; } for (i = 0; i < nl; i++) printf("%s\n", lines[i]);
Объяснение кода листинга программы
- Объявляется массив строк
lines
размером 100х1000. - Инициализируются счётчики
nl
иnlmax
. - В цикле
while
считываются строки из файлаifp
с помощью функцииfgets
и сохраняются в массивеlines
. - В каждой строке ищется символ новой строки
\n
с помощью функцииstrrchr
и заменяется на символ конца строки\0
. - Если символ новой строки найден, то увеличивается счётчик
nl
. - Если достигается максимальное количество строк или встречается ошибка при считывании строки, то цикл завершается.
- В цикле
for
выводятся все строки из массиваlines
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д