Я хотел бы, чтобы пользователь передал два параметра или оставил их пустыми. Например:
./program 50 50
или
./program
Когда я попытался использовать int main(int argc, char *argv[])
, первое, что я сделал, это изменить char *argv[]
на int *argv[]
, но это не сработало. Я хочу, чтобы пользователь просто вводил два целых числа от 0 до 100. Поэтому, если это не два целых числа, тогда это должно дать ошибку.
Я как бы думал о том, чтобы выдать ошибку с типами (как я использовал для программирования на С#), но независимо от того, что я вхожу, argv [1] будет всегда "char".
Итак, что я сделал,
for (int i = 0; i <= 100; i++) {
//printf("%d", i);
if (argv[1] == i) {
argcheck++;
printf("1st one %d\n", i);
}
else if (argv[2] == i) {
argcheck++;
printf("2nd one %d\n", i);
}
Это не работает. Кроме того, он дает предупреждение при компиляции, но если я, например, меняю argv
на atoi(argv[1])
, то он дает ошибку с ошибкой сегментации (core dumped).
Мне нужен простой способ решить эту проблему.
EDIT:
Итак, я исправил с помощью atoi()
, причина, по которой он выдавал ошибку сегментации, заключалась в том, что я пытался с нулевым значением, когда у меня нет параметров. Поэтому я исправил это, добавив дополнительный cond. Но теперь проблема в том, что значение можно сказать
./program asd asd
Тогда вывод atoi(argv[1])
будет равен 0. Есть ли способ изменить это значение?