Я знаю это, когда пишу:
int main (int argc, char *argv[])
{
return 0;
}
Я мог бы получить входы командной строки, такие как файлы для чтения ввода. Однако, что мне делать, когда входной файл будет предоставлен после компиляции. Я имею в виду, что имя входного файла inputFile.txt и моего кода хранится в main.cpp. Я сделаю следующее.
g++ main.cpp -o main
./main inputFile.txt
Чтобы получить inputFile.txt, что мне делать?
argc
хранит количество аргументов. argv
- массив аргументов.
argv[0]
будет именем программы, если доступно. См.: "argv [0] = имя исполняемого файла" принятый стандарт или просто общее соглашение?
Если вы передаете только один аргумент, вы можете использовать argv[1]
, который является вашим именем входного файла, для выполнения любых операций, которые вам нужны.
См. Что означает int argc, char * argv []? Чтобы получить больше информации.
argv[0]
- это имя программы. argv[1]
является первым аргументом.
в псевдокоде:
foreach(argv) {
if(argv exists)
open filehandle;
do stuff
} else {
printf "Your file does not seem to exist";
}
У вас есть два варианта.
В введенном вами случае строка "inputFile.txt" будет в argv [1] (arv [0] - ваша действительная команда). Затем вы можете использовать свои операционные системы для чтения из этого файла.
Что может быть проще, так это использовать перенаправление; т.е. измените свою командную строку на "./main <inputFile.txt". Тогда содержимое этого файла будет во входном потоке.
Первый метод (или написание вашей программы для поддержки обоих) был бы предпочтительнее для коммерческих приложений, но второй - для учебных целей.