при запуске программы с 23 405. Она выполняется без ошибок.
Отправленный код не является верным кодом return 1}
, синтаксическая ошибка.
Предполагается, что это был почтовый сбой, а return 1;}
было закодировано:
В коде отсутствует объявление strtol()
и printf()
.
Добавьте их, чтобы избежать неопределенного поведения:
#include <stdio.h>
#include <stdlib.h>
Я подозреваю, что код умер из-за некоторого неопределенного поведения , и ничего не печатал. При этом ОП неверно предполагал успех.
Другие проблемы, если сообщаемое «программа с 23 405» также не совсем верно:
Передача неверного указателя
Вызов strtol(argv[1], &inputs, 10)
с недопустимым argv[1]
- неопределенное поведение. Валидация argv[]
первая.
if (argc < 3) {
printf("Error: too few arguments.\n");
return 1;
}
Потенциальная потеря информации
strtol()
вернуть long
, а не int
.
long input1= strtol(argv[1], &inputs, 10);
long input2= strtol(argv[2], &inputs, 10);
Отсутствие и неправильное обнаружение конверсии
char *end1;
char *end2;
long input1= strtol(argv[1], &end1, 10);
long input2= strtol(argv[2], &end2, 10);
if (argv[1] == end1 || argv[2] == end2) {
printf("Error: no conversion.");
return 1;
}
Отсутствие подтверждения успеха
Чтобы отличить успех от неопределенного поведения, напечатайте успех.
// add
printf("Success\n");
return 0;
}