Чтение 2D-массива из файла на C

#c #arrays #file #matrix

#c #массивы #файл #матрица

Вопрос:

Я знаю, что на этот вопрос уже отвечали и задавали раньше, но я не совсем понимаю ответы, приведенные в этих сообщениях, поэтому я чувствую, что у меня нет другого выбора, кроме как задать его самому. Это определенно вопрос для начинающих, поэтому, пожалуйста, отнеситесь ко мне терпеливо и не усложняйте, если это не является абсолютно необходимым.

Что я хочу сделать, так это прочитать матрицу 2×3 из файла .txt, например

 12 14 15
24 244 988
  

а затем сохраните его в 2D-массиве, назовем его «array», так что array [0] [0] будет = 12, а array [1] [1] = 244 и т.д..

То, что я придумал до сих пор, это просто:

 for (int a = 0; a < 2; a  ) {
        for (int b = 0; b < 3; b  ) {
                fscanf_s(stream, "%d", array[a][b]);
        }

}
  

Он компилируется, но затем выходит из строя, поэтому я не уверен, что именно не так. Он и компилируется, и работает отлично, если я удалю это утверждение fscan_s, поэтому проблема должна быть там.

Любая помощь будет принята с благодарностью. Спасибо!

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

1. fscanf_s(stream, "%d", array[a][b]); вы забыли amp; —> fscanf_s(stream, "%d", amp;array[a][b]);

2. попробуйте вот так amp;array[a][b]

3. Вау, это было так просто… Большое спасибо! Отправьте его как ответ, чтобы я мог его принять! 😉

Ответ №1:

Он компилируется, но затем выходит из строя

Вы должны использовать адрес массива в scanf виде

      fscanf_s(stream, "%d", amp;array[a][b]);