Thread: isdigit() Function!

  1. #1
    Registered User
    Join Date
    May 2008
    Location
    Australia
    Posts
    230

    isdigit() Function!

    Hi guys, here is the code:

    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <ctype.h>
    
    int main()
    {
    	int iYearBorn = 0;
    	printf("\nEnter year born, either 2000, 2001, 2002: ");
    	scanf("%d", &iYearBorn);
    		if (isdigit(iYearBorn) == 0)
    			{
    				printf("\nInvalid Entry. Not a number! Program Terminating.\n");
    				return 0;
    			}
    	switch(iYearBorn)
    		{
    			case 2000:
    			printf("\n2000 is the year of luck!\n");
    			break;
    			case 2001:
    			printf("\nPeace be with you 2001\n");
    			break;
    			case 2002:
    			printf("\n2002 is uber leet pwnage dudez\n");
    			break;
    			default:
    			printf("\nNo data on that year!\n");
    		}
    	return 0;
    }
    What I want to do is check the user's input to make sure it's a number, if it's not a number I want it to display that message (Invalid Entry. Not a number! Program Terminating) and kill the program.

    If it is a number I want it to continue on down to the switch statement etc, but the problem is, whenever I run it, no matter what the user input is, it ALWAYS says "Invalid Entry. Not a number! Program Terminating" and kills the program, even if I enter a number... so I'm assuming i'm using the isdigit function wrong somehow, if anyone could help me out that'd be great. Thanks!

  2. #2
    Hurry Slowly vart's Avatar
    Join Date
    Oct 2006
    Location
    Rishon LeZion, Israel
    Posts
    6,794
    isdigit checks the character, not a number

    so '1' is digit, and 'a' is not...

    to make verification as you want - you need to read the user input as string for example using fgets

    then - try to convert it using strtol for example and see where the conversion stops, if all characters of the string except \n are successfully parsed - it was a valid number, if something left in the buffer - it is not
    All problems in computer science can be solved by another level of indirection,
    except for the problem of too many layers of indirection.
    David J. Wheeler

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Compiling sample DarkGDK Program
    By Phyxashun in forum Game Programming
    Replies: 6
    Last Post: 01-27-2009, 03:07 AM
  2. Including lib in a lib
    By bibiteinfo in forum C++ Programming
    Replies: 0
    Last Post: 02-07-2006, 02:28 PM
  3. Game Pointer Trouble?
    By Drahcir in forum C Programming
    Replies: 8
    Last Post: 02-04-2006, 02:53 AM
  4. Dikumud
    By maxorator in forum C++ Programming
    Replies: 1
    Last Post: 10-01-2005, 06:39 AM
  5. Question..
    By pode in forum Windows Programming
    Replies: 12
    Last Post: 12-19-2004, 07:05 PM