C DIR * dir нужно использовать только для одной работы одновременно

#c #directory

#c #каталог

Вопрос:

Здравствуйте, я программирую с использованием блока кода с использованием C , все, что я хочу, это использовать opendir дважды, и он открывается только после того, как оба фрагмента кода работают, но работает только верхний, а не нижний. Пожалуйста, кто-нибудь, помогите мне, одновременно работает только один каталог: я хочу, DIR чтобы он работал, и дайте мне значения для перехода к другому каталогу и получения значений.

 int main()
{   std::string EmployeeNumbr[1000];
    std::string DocumentName[1000];
    std::string Path = "C:\EmpFiles\";
    int f;
    int j;

  DIR *dir;
   struct dirent * file;
  

Комментарии:

1. Как вы определили, что нижний блок кода не «работает»? Каково ожидаемое и фактическое поведение? Вы включили предупреждения компилятора? Ваш компилятор должен кричать на вас, что f и j используется неинициализированным.

2. Вам также следует использовать более безопасные структуры данных C , такие как векторы и std::filesystem API.

3. Я использую оба каталога один за другим, и они работают отдельно, когда собраны вместе, работает только один сверху. Обратите внимание, что есть два каталога, и оба копируют directry из Windows.

4. Все это уже упаковано, std::filesystem чтобы обеспечить стандартизированный способ перебора записей каталога и даже выполнения его рекурсивно . Если вы хотите использовать opendir , readdir и closedir , упакуйте их в класс, чтобы упростить использование: пример

Ответ №1:

Вы используете f и j неинициализированы. Поскольку f это, вероятно, работает случайно, поскольку стек все еще относительно свежий.

Однако к моменту начала использования j стек был полностью загрязнен, и ваше неинициализированное использование возвращает случайный мусор стека.

Любой мало-мальски приличный компилятор должен кричать на вас, если вы это сделаете, поэтому, пожалуйста, выясните, как обновить уровни предупреждений (либо -Wall -Wextra -pedantic в GCC / Clang, либо -W4 в MSVC)