Берете любую консольную прогу из стандартных, открываете исходник и смотрите, как сделано. Есть getopt(), который обрабатывает "короткие" ключи типа -a, -b, -1 ... Есть getopt_long(), который обрабатывает "длинные" ключи (и "короткие" тоже) типа "--eto-zhopa, --eto-ruchka"