Я настоятельно рекомендую прочитать хорошую книгу по программированию на Си.Это будет намного быстрее, чем задавать вопросы здесь.
Однако, аргументы программы задаются в виде массива строк с нулевым символом в конце для главной функции, которая обычно объявляется как
int main (int argc, char**argv) { /*...*/ }
, есливы запускаете вашу программу с ./hanoistower 3
, и если ваш hanoistower.c
является вашим исходным кодом (который необходимо скомпилировать с включенными отладкой и предупреждением, например, gcc -Wall -g hanoistower.c -o hanoistower
в Linux), то у вас есть один дополнительный аргумент, поэтому
argc == 2
argv[0]
- это строка "./hanoistower"
argv[1]
- это строка "2"
(используйте atoi
для преобразования ее в int
) argv[2]
is NULL
Пожалуйста, научитесь использовать отладчик (gdb
в Linux).