07-19-2014
I avoid the *scanf*() functions like the plague. If they are passed unvalidated input, results are "undefined". If you're lucky your process will just SEGV and not cause any damage, if you're not you'll get corrupt data in some way.
To validate the input you have to know what it is and what standards to check it against. In other words, you have to parse and interpret the data. Because you pretty much can't safely call one of those functions without doing that.
Once you do that, there's no point in calling one of the *scanf*() functions.
10 More Discussions You Might Find Interesting
1. Programming
thanks to everyone for your earlier replies, but i have yet another problem with file i/o. i'm trying to read multiple lines with the same file, and have been using the following code to take in the first two lines from a file...
fscanf(fileptr, "%d %d %d %d %d %d\n", &n1, &n2, &n3, &n4, &n5,... (1 Reply)
Discussion started by: j_t_kim
1 Replies
2. Programming
I keep trying to use fscanf() and for some reason I can't get the syntax down and always get seg faults. I'm on a SunOS 5.5.1, and my current code looks like this:
int n1, n2, n3, n4, n5, n6;
/* open config file */
if (fileptr = fopen(filename,"r") == NULL) {
printf("couldn't open... (3 Replies)
Discussion started by: j_t_kim
3 Replies
3. Programming
Hi,
Can any one tell me what "%hx" as control parameter mean in fscanf.
Thanks,
abey (4 Replies)
Discussion started by: abey
4 Replies
4. Programming
I use fopen, fscanf, fclose to read a file. It can work well. since many files should be read, a function is created with the same code. But in the function, fscanf can not work well.
for example, the first line of the the file is: > filename
but the fscanf will give: 207/23/eee/34
it appears... (2 Replies)
Discussion started by: cdbug
2 Replies
5. Programming
hey guys, I'm working on a term project for a c/unix class. The basis of the program is that it will calculate the weight/balance of a plane. I'm hoping to have an input file as such:
"
Pilot weight:
Passenger weight:
baggage wieght:
etc
"
and the idea is that I'm trying to use... (2 Replies)
Discussion started by: jlangholzj
2 Replies
6. Programming
Hi
I have a file like that:
1 2 3 4 5 6 7 8
and I want print on stdout:
1 3 8
in other words i want choose what print out.
I was thinking to use fscanf as:
fscanf(file_in,"%d %d %d",&a, &b,&c);
but in this way i get:
1 2 3
Is there a solution using fscanf to obtain my... (2 Replies)
Discussion started by: Dedalus
2 Replies
7. Shell Programming and Scripting
Hello,
I really would appreciate some help with a bash script for some string manipulation on an SQL dump:
I'd like to be able to rename "sites/WHATEVER/files" to "sites/SOMETHINGELSE/files" within the sql dump.
This is quite easy with sed:
sed -e... (1 Reply)
Discussion started by: otrotipo
1 Replies
8. UNIX for Dummies Questions & Answers
hi there...
i have a question regarding the fscanf function...
let's say i have a data:
1 2 3 4 5 6
7 8 9 1 2 3
4 5 6 7 8 9
1 2 3 4 5 6
how do i read only the first COLUMN, or the second COLUMN or the third COLUMN or etc....??????
thanks (1 Reply)
Discussion started by: theunknown
1 Replies
9. UNIX for Dummies Questions & Answers
Hi
In the below query userreg.status returns a value of 1 (Active) or -1 (Non Active). Ideally, I would like to replace this automatically on the export so instead of getting 1 or -1 I get Active / Non Active.
Any help, as usual, would be greatly apprecited. (1 Reply)
Discussion started by: theref
1 Replies
10. Shell Programming and Scripting
Hi,
I have a set of files in a directory that I have to read and replace the first occurrence of a number with another dummy number. This is what I have so far but it does not seem to work. The files have lot of other data in each row and each data element is separated by ,@,
for file in... (13 Replies)
Discussion started by: scorpioraghu
13 Replies
LEARN ABOUT ULTRIX
fscanf
scanf(3int) scanf(3int)
Name
scanf, fscanf, sscanf - convert formatted input
Syntax
#include <stdio.h>
int scanf( format [, pointer ] ... )
char *format;
int fscanf( stream, format [, pointer ] ... )
FILE *stream;
char *format;
int sscanf( s, format [, pointer ] ... )
char *s, *format;
Description
The international functions and are similar to the standard I/O functions. The difference is that the international functions allow you to
use the %digit$ conversion character in place of the I% character you use in the standard I/O functions. The digit is a decimal digit n
from 1 to 9. The international functions apply conversions to the n th argument in the argument list, rather than to the next unused argu-
ment.
You can use % conversion character in the international functions. However, you cannot mix the % conversion character with the %digit$
conversion character in a single call.
In all cases, uses the radix character and collating sequence that is defined by the last successful call to category or If the radix or
collating sequence is undefined, the function uses the C locale definitions.
International Environment
LC_COLLATE Contains the user requirements for language, territory, and codeset for the character collation format. affects the behav-
ior of regular expressions and the string collation functions in If is not defined in the current environment, provides the
necessary default.
LC_NUMERIC If this environment is set and valid, uses the international language database named in the definition to determine radix
character rules.
LANG If this environment variable is set and valid uses the international language database named in the definition to determine
collation and character classification rules. If or is defined, their definitions supersede the definition of LANG.
Examples
The following shows an example of using the function:
scanf("%2$s %1$d", integer, string)
If the input is `` january 9 '', the function assigns 9 to and ``january'' to
Return Values
The function returns the number of successfully matched and assigned input fields. This number can be zero if the function encounters
invalid input characters, as specified by the conversion specification, before it can assign input characters.
If the input ends before the first conflict or conversion, returns EOF. These functions return EOF on end of input and a short count for
missing or invalid data items.
Environment
In POSIX mode, the E, F, and X formats are treated the same as the e, f, and x formats, respectively; otherwise, the upper-case formats
expect double, double, and long arguments, respectively.
See Also
intro(3int), setlocale(3), strtod(3), strtol(3), printf(3int), getc(3s), printf(3s), scanf(3s)
Guide to Developing International Software
scanf(3int)