Ввод командной строки c ++ [дубликаты]

0

Я знаю это, когда пишу:

int main (int argc, char *argv[])
{

  return 0;
}

Я мог бы получить входы командной строки, такие как файлы для чтения ввода. Однако, что мне делать, когда входной файл будет предоставлен после компиляции. Я имею в виду, что имя входного файла inputFile.txt и моего кода хранится в main.cpp. Я сделаю следующее.

g++ main.cpp -o main
./main inputFile.txt

Чтобы получить inputFile.txt, что мне делать?

  • 0
    Получить имя файла из аргументов, проверить, существует ли файл, открыть файл, получить содержимое, прибыль
  • 0
    @afuzzyllama main (int argc, char * argv []) достаточно, чтобы получить входной файл в этом случае?
Показать ещё 4 комментария
Теги:
command-line-arguments
argv

3 ответа

4

argc хранит количество аргументов. argv - массив аргументов.

argv[0] будет именем программы, если доступно. См.: "argv [0] = имя исполняемого файла" принятый стандарт или просто общее соглашение?

Если вы передаете только один аргумент, вы можете использовать argv[1], который является вашим именем входного файла, для выполнения любых операций, которые вам нужны.

См. Что означает int argc, char * argv []? Чтобы получить больше информации.

  • 1
    Попытка вспомнить, когда argv [0] является первым фактическим параметром и когда argv [1] является ...
  • 2
    argv[0] - это имя программы. argv[1] является первым аргументом.
Показать ещё 3 комментария
0

в псевдокоде:

foreach(argv) {  
    if(argv exists)  
    open filehandle;   
    do stuff  
} else {  
    printf "Your file does not seem to exist";  
}
0

У вас есть два варианта.

В введенном вами случае строка "inputFile.txt" будет в argv [1] (arv [0] - ваша действительная команда). Затем вы можете использовать свои операционные системы для чтения из этого файла.

Что может быть проще, так это использовать перенаправление; т.е. измените свою командную строку на "./main <inputFile.txt". Тогда содержимое этого файла будет во входном потоке.

Первый метод (или написание вашей программы для поддержки обоих) был бы предпочтительнее для коммерческих приложений, но второй - для учебных целей.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню