メモ:strtol関数の呼び出し例

1294 ワード

#include <stdio.h>
#include <limits.h>
#include <stdlib.h>
#include <errno.h>

int main(int argc, char * argv[])
{
        int base;
        char * endptr, * str;
        long val;

        if(argc<2)
        {
                fprintf(stderr, "Usage: %s str [base]
", argv[0]);                 exit(EXIT_FAILURE);         }         str = argv[1];         base = (argc > 2) ? atoi(argv[2]) : 10;         errno = 0;      /* To distinguish success/failure after call */         val = strtol(str, &endptr, base);         /* Check for various possible errors */         if((errno==ERANGE && (val==LONG_MAX || val==LONG_MIN)) || (errno!=0 && val==0))         {                 perror("strtol");                 exit(EXIT_FAILURE);         }         if(endptr==str)         {                 fprintf(stderr, "No digits were found
");                 exit(EXIT_FAILURE);         }         /* If we got here, strtol() successfully parsed a number */         printf("strtol() returned %ld
", val);         if(*endptr!='\0')       /* Not necessarily an error... */                 printf("Further characters after number: %s
", endptr);         exit(EXIT_SUCCESS); }