Например, я код:Как передать переменную команде оболочки в C?
fp = popen("wc -l < myfile", "r");
Но myfile
должно быть имя любого файла, который разбирается в этом проекте. Это может быть файл abc.txt
или 123.txt
или xy.txt
т.д.
Тогда я хочу, чтобы получить выход выполнения этого wc -l < myfile
. Но проблема в том, что я не знаю, какая функция в C может помочь мне разобрать имя myfile
на эту команду оболочки, и я также могу получить вывод. Может ли кто-нибудь дать мне несколько предложений?
Редактировать: Файл, который я хочу прочитать, очень большой. Я хочу прочитать его данные в array.I не могу использовать список для его хранения, потому что слишком медленно найти конкретные данные в списке. Проблема в том, что, если я использую один размерный массив для malloc()
памяти для массива, на ноутбуке недостаточно свободного пространства. Поэтому я планирую использовать двухмерный массив для его хранения. Поэтому я должен получить количество строк в файле, а затем решить размер каждого размера в этом массиве через log
.
Спасибо за все ответы. Этот проект посвящен чтению двух файлов. Первый файл намного больше, чем второй файл. Второй файл выглядит следующим образом:
1 13 0
2 414 1
3 10 0
4 223 1
5 2 0
Третье число в каждой строке называется «ID». Например, число «1» имеет идентификатор 0, номер «2» имеет идентификатор 1, номер «3» имеет идентификатор «0». (Не обращайте внимания на среднюю Num в каждой строке) И первый файл, как:
1 1217907
1 1217908
1 1517737
1 2
2 3
2 4
3 5
3 6
Если каждый Num в первом файле имеет идентификатор «0», я должен хранить обоих NUM в каждой строке в массив структуры данных. Например, мы можем видеть, что Num «1» имеет идентификатор «0» во втором файле, так что мне нужно хранить:
1 1217907
1 1217908
1 1517737
1 2
из моего первого файла в массив структур данных. Число «2» имеет идентификатор «1», но число «3» имеет идентификатор «0», а число «4» имеет идентификатор «1», поэтому необходимо сохранить: 2 3
, но не хранить 2 4
из моего первого файла. Вот почему мне нужно использовать массив для хранения двух файлов. Если я использую два массива для их хранения, я могу проверить, является ли идентификатор этого номера «0» быстрым в массиве, принадлежит к второму файлу, потому что с помощью массива быстро найти определенные данные, индекс может быть непосредственно значением num.
«Недостаточно непрерывного пространства памяти» на самом деле не имеет смысла. Современные операционные системы используют пространство виртуальной памяти, которое намного больше физической памяти.Даже если у вас недостаточно физической памяти, это не имеет значения. –
Даже если файл 20G? – beasone
Большинство моих одноклассников не смогли выделить достаточное смежное пространство памяти. Они сказали мне, что их программа врезалась на компьютер, который используется для тестирования своих программ. Они сказали, что на компьютере недостаточно места для памяти, потому что он старый ... – beasone