Считывание и запись в массив строк из файла - 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; }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Объявляются переменные:
- i - счетчик чисел
- x - размер строки
- s - строка для считывания числа
- f1, f2 - файлы для чтения и записи
- Открываются файлы f1 и f2
- Запускается бесконечный цикл, который прерывается при достижении конца файла или при отсутствии данных в файле
- Внутри цикла считывается строка из файла и сохраняется в переменной s
- Вычисляется длина строки x
- Осуществляется вывод строки на экран с помощью функции printf
- Используется функция system(
cls
) для очистки экрана - Запускается внутренний цикл, который прерывается при достижении конца строки или при отсутствии чисел в строке
- Внутри внутреннего цикла проверяется каждый символ строки
- Если символ является числом, то увеличивается счетчик i
- Если i равно x - 1, то число считывается из строки и записывается в файл f2
- После внутреннего цикла осуществляется выход из внешнего цикла
- Закрываются файлы f1 и f2
- Возвращается 0, что означает успешное выполнение программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д