Программа ниже преобразует строку в длинную, но, основываясь на моем понимании, она также возвращает ошибку. Я полагаюсь на то, что если strtol
успешно преобразовать строку в long, то второй параметр strtol
должен быть равен NULL. Когда я запускаю приложение ниже с 55, я получаю следующее сообщение.
./convertToLong 55
Could not convert 55 to long and leftover string is: 55 as long is 55
Как я могу успешно обнаружить ошибки из strtol? В моем приложении нуль является допустимым значением.
код:
#include <stdio.h>
#include <stdlib.h>
static long parseLong(const char * str);
int main(int argc, char ** argv)
{
printf("%s as long is %ld\n", argv[1], parseLong(argv[1]));
return 0;
}
static long parseLong(const char * str)
{
long _val = 0;
char * temp;
_val = strtol(str, &temp, 0);
if(temp != '\0')
printf("Could not convert %s to long and leftover string is: %s", str, temp);
return _val;
}