/********************************************************* * From C PROGRAMMING: A MODERN APPROACH, Second Edition * * By K. N. King * * Copyright (c) 2008, 1996 W. W. Norton & Company, Inc. * * All rights reserved. * * This program may be freely distributed for class use, * * provided that this copyright notice is retained. * *********************************************************/ /* tnumconv.c (Chapter 26, page 684) */ /* Tests C89 numeric conversion functions */ #include #include #include #define CHK_VALID printf(" %s %s\n", \ errno != ERANGE ? "Yes" : "No ", \ *ptr == '\0' ? "Yes" : "No") int main(int argc, char *argv[]) { char *ptr; if (argc != 2) { printf("usage: tnumconv string\n"); exit(EXIT_FAILURE); } printf("Function Return Value\n"); printf("-------- ------------\n"); printf("atof %g\n", atof(argv[1])); printf("atoi %d\n", atoi(argv[1])); printf("atol %ld\n\n", atol(argv[1])); printf("Function Return Value Valid? " "String Consumed?\n" "-------- ------------ ------ " "----------------\n"); errno = 0; printf("strtod %-12g", strtod(argv[1], &ptr)); CHK_VALID; errno = 0; printf("strtol %-12ld", strtol(argv[1], &ptr, 10)); CHK_VALID; errno = 0; printf("strtoul %-12lu", strtoul(argv[1], &ptr, 10)); CHK_VALID; return 0; }