Чтение файла по столбцам в C

#c #file

Вопрос:

У меня есть файл, содержащий цифры:

 23 899 234 12
12 366 100 14
10 256 500 23
14 888 564 30
 

Как я могу прочитать этот файл по столбцам с помощью C ? Я поискал на YouTube, но они читают файл только по строкам. Если мне нужно найти наибольшее значение из первого столбца, мне нужно прочитать его по столбцам, верно?

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

1. Вы можете читать строку за строкой и хранить значения в векторе векторов, в котором внешний вектор-это строки, а внутренний вектор-столбцы. Затем вы можете найти максимальное значение в столбце, найдя максимальное значение в соответствующем внутреннем векторе.

2. «Мне нужно прочитать его по столбцам» — файлы читаются символ за символом, поэтому они читаются строка за строкой (строка-это набор символов (или ни одного), заканчивающихся концом строки (необязательный возврат каретки перевод строки). Вы должны прочитать строку, получить первое поле/col и игнорировать все остальное, пока не перейдете к следующей строке.

Ответ №1:

Попробуйте инициализировать переменную с именем column =0 Теперь, когда вы получаете доступ к строке, выполните итерацию по столбцу, используя цикл for, до конца столбца, который можно определить по количеству строк в файле, затем выполните операцию, которую вы хотите выполнить, теперь увеличьте столбец no для перехода к следующему столбцу.

И вы можете получить значение в виде n*векторов, где n — количество строк, Размер вектора — длина столбца

Ответ №2:

Файлы-это хранилища с последовательным доступом, поэтому , как правило, вы должны читать все. По сути, это похоже на чтение с ленты. И формат вашего файла не предлагает никаких ярлыков.

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

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

Ответ №3:

Прочитайте каждую строку, разделите ее пробелом и сохраните первое значение как наивысшее значение. повторяйте действия для всех строк, пока не дойдете до конца файла, снова сравнивая первое значение с уже сохраненным значением как наивысшее.

У меня нет компилятора C , доступного для тестирования. концептуально это должно сработать для вас.

 #include <fstream>

#include <string>

#include <iostream>

#include<sstream>

using namespace std;
int main() {
  ifstream inFile("Read.txt");

  string line;
  int greatest = 0;
  while (getline(inFile, line)) {
    stringstream ss(line);
    string FirstColumn;

    while (ss >> FirstColumn) {
      if (stoi(FirstColumn) > greatest)
        greatest = stoi(FirstColumn);

    }
    cout << greatest << endl;
  }

}