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

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

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

Есть файл-конфигурация, в котором на каждой новой строке стоит сначала число, а потом через пробел комментарии. Задача заключается в том, чтобы считать все эти числа, стоящие в начале строки, и закинуть их, скажем, в массив. Я думаю при её решении использовать функции семейства atoi, но для этого мне нужно закинуть каждую строку из файла в массив. Подскажите, пожалуйста, как лучше это организовать. Пример файла-конфигурации: 1.5 длина когерентности 0.05 шаг по сетке 20 длина образца ........ну в таком вот стиле

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

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
/*Есть файл-конфигурация, в котором на каждой новой строке стоит сначала число,
 а потом через пробел комментарии. Задача заключается в том, чтобы считать все
  эти числа, стоящие в начале строки, и закинуть их, скажем, в массив.*/
int main()
{
    int i = 0, x = 0;
    char s[80];
    FILE *f1, *f2;
    f1 = fopen("file1.txt", "r");
    f2 = fopen("file2.txt", "w");
    while( 1 == fscanf(f1, "%s", s)){
        x  = printf("%s ", s);
        system("cls");
        while(1){
            if((s[i] < '0' || s[i] > '9') && s[i] != '.'){
            i = 0;break;
            }
            else ++i;
            if(i == x - 1){
                fprintf(f2, "%s\n", s);
                i = 0;break;
            }
        }
    }
    fclose(f1);
    fclose(f2);
    return 0;
}

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

  1. Включаются необходимые заголовочные файлы
  2. Объявляются переменные:
    • i - счетчик чисел
    • x - размер строки
    • s - строка для считывания числа
    • f1, f2 - файлы для чтения и записи
  3. Открываются файлы f1 и f2
  4. Запускается бесконечный цикл, который прерывается при достижении конца файла или при отсутствии данных в файле
  5. Внутри цикла считывается строка из файла и сохраняется в переменной s
  6. Вычисляется длина строки x
  7. Осуществляется вывод строки на экран с помощью функции printf
  8. Используется функция system(cls) для очистки экрана
  9. Запускается внутренний цикл, который прерывается при достижении конца строки или при отсутствии чисел в строке
  10. Внутри внутреннего цикла проверяется каждый символ строки
  11. Если символ является числом, то увеличивается счетчик i
  12. Если i равно x - 1, то число считывается из строки и записывается в файл f2
  13. После внутреннего цикла осуществляется выход из внешнего цикла
  14. Закрываются файлы f1 и f2
  15. Возвращается 0, что означает успешное выполнение программы

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


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

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

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