Sponsored Content
Full Discussion: C first Script Question
Top Forums Programming C first Script Question Post 302751799 by Corona688 on Friday 4th of January 2013 01:13:30 PM
Old 01-04-2013
scanf() has an unfortunate problem where, if it finds any bad data in the stream, it puts it back. You are asking for %d, so it looks for digits. If it sees any non-digits, it will give up and not even show them to you.

Imagine you're trying to read 9 numbers with 9 scanf calls, and on the very first one you type in A then enter. The first scanf will see 'A', decide it's not a number, and put it back. This means the second will also see 'A'. So will the third, fourth, fifth, sixth, seventh, eighth, and ninth.

sscanf, which operates on strings instead of streams, avoids this problem, since it has nowhere to "put back" the letter into. It just uses the string you give it and doesn't care what happened last time. fgets() and sscanf() make a good team; fgets reads entire lines and turns them into strings, while sscanf() processes strings and turns them into what you want.

Code:
while(fgets(buf, 512, stdin) != NULL)
{
        int value;
        if(sscanf(buf, "%d", &value) == 1)
        {
                printf("You typed a number\n");
        }
        else
        {
                printf("You didn't type a number\n");
        }
}

Note that this will accept things like 1234a, since sscanf will stop at the a.

Last edited by Corona688; 01-04-2013 at 02:18 PM..
These 2 Users Gave Thanks to Corona688 For This Post:
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Another script question.

Hi, First off I usually script in the bash shell. Ok, in my script I am checking to see if the filename has a .txt extension. So I was trying: if then echo "Must contain a valid .txt extension" fiandif ] then echo "Must contain a valid .txt extension" fiBut no go the first... (5 Replies)
Discussion started by: Astudent
5 Replies

2. UNIX for Dummies Questions & Answers

script question

Correct me if i'm wrong, but by adding "#!/bin/ksh" at the start of a script will force it to run in the korn shell no matter which shell you are currently using?? (2 Replies)
Discussion started by: shad0w75
2 Replies

3. Shell Programming and Scripting

script question

I'm using solaris and i have an old script that an ex employee wrote but i can't seem to get it working. well is just one part of the script if ($?MC_PROD_DIR == 0) setenv MC_PROD_DIR $HOME/PRODUCTION source $MC_PROD_DIR/scripts/localenv ** i understand what this part of the script is... (1 Reply)
Discussion started by: fusionjd
1 Replies

4. UNIX for Dummies Questions & Answers

Script question

Can anyone help with these scripts? Im new to this and struggling. Thank you for your help. Pre-requisites Create a file with x amount of lines in it, the content of your choice. (Have already done this) Script 1 Write a script that takes two arguments. The first being a line of text,... (3 Replies)
Discussion started by: beginner1
3 Replies

5. Shell Programming and Scripting

script question

Anyone know why this won't work? #!/usr/bin/ksh for db in `cat /etc/oratab|egrep ':N|:Y' | grep -v \* | cut -f1 -d":"` do echo "************************" echo "database is $db" echo "************************" done I am getting an error on the line... (7 Replies)
Discussion started by: ace2000
7 Replies

6. Shell Programming and Scripting

Script Question

Here is my problem. I have a txt file with a list of user names in both upper case and lower case. I need to remove the names from the passwd file. I want to be able to run a script that looks at my txt list and then removes those names from the passwd file. It would be nice if it backed up the... (3 Replies)
Discussion started by: wgartin
3 Replies

7. Shell Programming and Scripting

Script question

I am trying to write a script to check the STIG our unix boxes. I want to put in checks to determine if certain files or directories are there. For example: If /opt/SUNWexplo exists echo "Sun Explorer exists" else echo "Sun Explorer is not installed" I am sure I could write... (2 Replies)
Discussion started by: rkruck
2 Replies

8. UNIX for Dummies Questions & Answers

Script Question

I have a script that will calculate some information about the current directory that I run the script in. How can I have it where it gets an argument from the user(such as a directory) and the script calculate the information for the given directory? Any help is greatly appreciated. (8 Replies)
Discussion started by: tr32
8 Replies

9. Shell Programming and Scripting

script question

How can I include a counter in this if statement so only sends out 5 notifications. # the if statement will check for the lines status, if status is down sends email if then LIST="user@email.com" mail -s "rje_lines_down" $LIST < ${tmpfile} #sends an email to list fi thanks... (2 Replies)
Discussion started by: d4n3lu
2 Replies

10. Shell Programming and Scripting

Script question

I know some tricks like this : echo " E"; sleep 0.1; clear; echo " Er"; sleep 0.1; clear; echo " Err"; sleep 0.1; clear; echo " Erro"; sleep 0.1; clear; echo " Error ";... (2 Replies)
Discussion started by: hakermania
2 Replies
rt-shredder(8)						     Request Tracker Reference						    rt-shredder(8)

NAME
rt-shredder - Script which wipes out tickets from RT DB SYNOPSIS
rt-shredder --plugin list rt-shredder --plugin help-Tickets rt-shredder --plugin 'Tickets=query,Queue="general" and Status="deleted"' rt-shredder --sqldump unshred.sql --plugin ... rt-shredder --force --plugin ... DESCRIPTION
rt-shredder - is script that allow you to wipe out objects from RT DB. This script uses API that RT::Shredder module adds to RT. Script can be used as example of usage of the shredder API. USAGE
You can use several options to control which objects script should wipeout. OPTIONS
--sqldump <filename> Outputs INSERT queries into file. This dump can be used to restore data after wiping out. By default creates files <RT_home>/var/data/RT-Shredder/<ISO_date>-XXXX.sql --object (DEPRECATED) Option has been deprecated, use plugin "Objects" instead. --plugin '<plugin name>[=<arg>,<val>[;<arg>,<val>]...]' You can use plugins to select RT objects with various conditions. See also --plugin list and --plugin help options. --plugin list Output list of the available plugins. --plugin help-<plugin name> Outputs help for specified plugin. --force Script doesn't ask any questions. SEE ALSO
RT::Shredder perl v5.14.2 2013-05-22 rt-shredder(8)
All times are GMT -4. The time now is 05:34 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy