Проблема real в вашем коде заключается в том, что вы пытаетесь вызвать функции, которые вы не объявили (вы должны использовать компилятор C89 / 90).Вы звоните isdigit
.Вы звоните printf
.Вы звоните atoi
.Вы называете последние два неправильно.И единственная причина, по которой компилятор не может сообщить вам о неправильном вызове этих функций, заключается в том, что вы забыли объявить их.
Включите <ctype.h>
, <stdlib.h>
и <stdio.h>
в начале вашего исходного файла, поэтомучто компилятор знает правильные типы параметров для atoi
и других функций.Как только вы это сделаете, вы сможете выяснить проблему с atoi
, потому что компилятор выдаст диагностическое сообщение, объясняющее проблему.Тогда вы можете изменить вызов соответственно.Некоторые компиляторы также смогут обнаружить проблему с помощью вызова printf
.
Обратите внимание, что даже если вы измените вызовы atoi
и printf
, как рекомендовано в других ответах (например, на atoi(argv[1])
)и т. д.), ваш код по-прежнему останется недействительным, потому что в C89 / 90 вызов printf
без объявления его вначале приводит к неопределенному поведению (а в C99 совершенно недопустимо вызывать любую функцию без объявленияэто первое).