Считывание файла в массив строк - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Добрый день, подскажите пожалуйста, где ошибка: есть файл в котором строки 123 флоалф 124 жлфоавао 567 ждлофолвоп 1356 длождоп мне нужно прочитать его в массив строк т.е чтобы line[1] = 123 флоаф line[2] = 124 жлфоавао и т.д я делаю это так:
fp = fopen(argv[0], "r");
                while(!feof(fp)){
                        fscanf(fp, "%s", line[i]);
                        i++;
                }
но программа компилируеца, но выдает ошибку при выполнении Segmentation fault (core dumped) Спасибо!

Решение задачи: «Считывание файла в массив строк»

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]);

Объяснение кода листинга программы

  1. Объявляется массив строк lines размером 100х1000.
  2. Инициализируются счётчики nl и nlmax.
  3. В цикле while считываются строки из файла ifp с помощью функции fgets и сохраняются в массиве lines.
  4. В каждой строке ищется символ новой строки \n с помощью функции strrchr и заменяется на символ конца строки \0.
  5. Если символ новой строки найден, то увеличивается счётчик nl.
  6. Если достигается максимальное количество строк или встречается ошибка при считывании строки, то цикл завершается.
  7. В цикле for выводятся все строки из массива lines.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.933 из 5
Похожие ответы