Как прочитать несколько файлов с одинаковым префиксом в C?

У меня есть большое количество файлов с префиксом info_ _ _ _.txt (например, info0921,info1231,info0426).
Последние четыре цифры - это дата в формате "mmdd".
Мне нужно написать программу на C, чтобы прочитать все эти файлы, сохранить данные в массив и сделать некоторые вычисления с ним.
Я пытался сделать что-то подобное:

for(i = 0; i < Number_of_files; i++){
sprintf(filename, "info%d.txt", i+1);}

Тем не менее, это не работает хорошо, потому что "я" не соответствует формату даты.

1 ответ

У вас есть два пути:

  • Вы пытаетесь открыть все файлы, которые могут соответствовать вашему шаблону (так примерно 366 возможностей)
  • Вы открываете каталог, в котором находятся ваши файлы, перечисляете все записи, и для каждой записи вы видите, соответствует ли это вашему шаблону.

Для первого что-то вроде

for(i = 1; i <= 12; i++) {
    for(j = 1; j < 31; j++) {
        sprintf(filename, "info%02d%02d.txt", i, j);
        if (!file = fopen(filename, "r")) {
            if (errno != ENOENT) {
                // Real error, log ?
            }
        } else {
            // Yay ! Can use "file" now
            fclose(file);
            file = NULL;
        }
    }
}

Сделаю.

Для последнего нам нужно знать, используете ли вы Linux или Windows.

Другие вопросы по тегам