Построчное чтение файла в массив - C (СИ)
Формулировка задачи:
доброго всем своими силами изучаю C. Поставил себе задачу:
Есть некий файл. Нужно читать его построчно и писать в массив строки, затем вывести их на экран.
Ни с файлами, ни с массивами и строками работать не умею
Как я пытался решить задачу:
компиляция:
запуск:
Помогите словом и делом, пожалуйста
#include <stdio.h> int main(int argc, char const *argv[]) { char *stroka; // текущая строка char stored[1000][80]; // массив из 1000 строк длинной по 80 символов FILE *f; f = fopen("textmassive", "r"); int i = 0; // счетчик строк while(fgets(stroka, 80, f) != NULL) // пока есть строки читаем их в stroka { //printf("%s\n", stroka); // -- работает stored[i][sizeof(stroka)] = stroka; i++; } fclose(f); while(i) { printf("%s\n",stored); i--; } }
gcc -o x x.c x.c: В функции «main»: x.c:19:29: предупреждение: в присваивании указатель преобразуется в целое без приведения типа [по умолчанию включена] x.c:28:3: предупреждение: format «%s» expects argument of type «char *», but argument 2 has type «char (*)[80]» [-Wformat]
./x Ошибка сегментирования (core dumped)
Решение задачи: «Построчное чтение файла в массив»
textual
Листинг программы
char stored[1000][80]; int readen; /*...*/ for ( readen = 0; readen < 1000 && fgets(stored[readen], 80, f); ++readen ) ; /* вот и всё чтение, в readen количество прочтённых строк */
Объяснение кода листинга программы
- Объявлен массив
stored
типаchar
размером 1000 строк по 80 символов каждая. - Объявлена переменная
readen
типаint
для подсчёта количества прочитанных строк. - Запущен цикл
for
, который будет выполняться, пока не будут выполнены два условия:readen
меньше 1000.fgets()
успешно прочитает строку вstored[readen]
.
- Внутри цикла
for
происходит следующее:- Увеличивается значение
readen
на единицу. - Ничего не записывается в
stored[readen]
. - Если
fgets()
вернулNULL
, то есть достигнут конец файла или произошла ошибка, то цикл прекращается.
- Увеличивается значение
- После выполнения цикла, в переменной
readen
будет храниться количество прочитанных строк.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д