#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;
}
}