Язык Си в примерах/Использование аргументов командной строки: различия между версиями

Содержимое удалено Содержимое добавлено
Нет описания правки
Нет описания правки
Строка 1:
== Параметры командной строки и Linux ==
Программы могут принимать аргументы. Ниже приведен пример программы, которая печатает список аргументов,
которые были переданы ей в командной строке.
Пример ее работы
 
bash$ ./argv alpha beta gamma last
Argument 0: ./a.out
Argument 1: alpha
Argument 2: beta
Argument 3: gamma
Argument 4: last
 
 
=== Пример 1 ===
 
/* Program: argv.c
Build me with
gcc -o argv argv.c
*/
#include <stdio.h>
int
main (int argc, char * argv[])
{
int i;
for( i = 0 ; i < argc; i++)
{
printf("Argument %d: %s\n", i, argv[i]);
}
if(argc == 1)
{
printf("Command line has no additional arguments\n");
}
return 0;
}
 
 
 
Например стандартная программа 'ls' в Linux в качестве аргумента
принимает имена директорий, содержимое которых нужно вывести в стандартный поток вывода. Команда
 
bash$ ls /home/user
 
выведет содержимое директории '/home/user'.
 
Команда 'ls' имеет множество опций, которые можно передавать в командной строке. о них вы можете узнать,
запустив команду 'ls' с опцией '-h':
 
bash$ ls -h
 
 
Вообще, программа может получать данные из нескольких источников. Наиболее важные источники это
* аргументы командной строки
* стандартный поток ввода
* файлы
* средства взаимодействия процессов (signals, sockets, messages, ...)
 
Научимся использовать первый из них.
 
== Подробнее об аргументах командной строки ==
 
Основной функцией в программе на языке Си является функция main(). Мы уже познакомились с простейшим способом объявления этой функции:
 
Строка 30 ⟶ 90 :
Для доступа к параметру под номером i следует писать argv[i]. argv[i] - это строка, передаваемая в соответствии с соглашениями языка Си о строках. С ней можно проделывать все операции, как с обычной строкой. (Её даже можно модифицировать, но это считается дурным тоном!)
 
Вот еще один пример программы, работающей со своей командной строкой:
Вот, например, как может выглядеть простейшая программа на языке Си, работающая со своими параметрами:
 
=== Пример 2 ===
/*
* Пример программы, работающей со своей командной строкой
Строка 70 ⟶ 130 :
return 0;
}
 
=== Задачи для самостоятельного решения ===
 
* Напишите программу, которая интерпретирует свои аргументы как целые сила и выводит на стандартный поток вывода их сумму
* Напишите программу, которая принимает аргумент -- имя файла, и выводит содержимое этого файла
* в текстовом виде, обозначая не ASCII символы знаками вопроса (если дана опция =-text= )
* в шестнадцатиричном виде (если дана опция =-hex=)
* как есть (по умолчанию)