У меня есть следующий код, который берет строковый параметр из командной строки и должен, во-первых, разделить его на две отдельные строки и, во-вторых, преобразовать каждую из них в целочисленные значения:
int numOne = 0, numTwo = 0;
char *tmp, *end;
tmp = strtok(argv[1], ":");
numOne = strtol(tmp, &end, 10);
if (errno == ERANGE) {
printf("range error\n");
break;
}
while (tmp != NULL) {
numTwo = strtol(tmp, &end, 10);
if (errno == ERANGE) {
printf("range error\n");
break;
}
tmp = strtok(NULL, argv[1]);
}
Проблема в том, что этот код работает нормально, если параметр CL выглядит как «1: 500».Однако, если это «0: 500», значения, сохраненные в numOne и numTwo, равны 0 и 5 соответственно.Если первое значение равно 0, strtok () впоследствии игнорирует любые 0-значения, и я никогда не получаю значения, такие как 50, 500, 5000 и т. Д. В numTwo.
Пожалуйста, помогите мне понять, почему это так, икак это исправить.Спасибо!