Basic I/O - Scanf : CSCI 230
Basic I/O - Scanf : CSCI 230
Basic I/O - Scanf : CSCI 230
CSCI 230
IUPUI
Dale Roberts
Dale Roberts
Conversion specifier
Description
Integers
d Read an optionally signed decimal integer. The corresponding argument is a pointer to integer Read an optionally signed decimal, octal, or hexadecimal integer. The corresponding argument is a pointer to integer. Read an octal integer. The corresponding argument is a pointer to unsigned integer. Read an unsigned decimal integer. The corresponding argument is a pointer to unsigned integer. Read a hexadecimal integer. The corresponding argument is a a pointer to unsigned integer. Place before any of the integer conversion specifiers to indicate that a short or long integer is to be input.
i
o u x or X h or l
Dale Roberts
Floating-point Number
e,E,f,g, G I or L Read a floating point value. The corresponding argument is a pointer to a floating point variable. Place before any of the floating point conversion specifiers to indicate that a double or long double value is to be input Read a character. The corresponding argument is a pointer to char no null (\0) is added Read a string. The corresponding argument is a pointer to an array of type char that is large enough to hold the string and a terminating null (\0) character which is automatically added.
Dale Roberts
Scan set
[scan char
Miscellaneous
p n
Read an address of the same form produced when an address is output with %p in a printf statement % Store the number of characters input so far in this scanf. The corresponding argument is a pointer to integer Skip a percent sign (%) in the input
Dale Roberts
Skipping characters
Include character to skip in format control Or, use * (assignment suppression character)
Skips any type of character without storing it
Dale Roberts
Example:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 /* Fig 9.20: fig09_20.c */ /* Reading characters and strings */ #include <stdio.h>
printf( "The input was:\n" ); printf( "the character \"%c\" ", x ); printf( "and the string \"%s\"\n", y ); return 0; }
Program Output:
Enter a string: Sunday The input was: the character "S" and the string "unday"
Dale Roberts
Example: int i, float x; char name[50]; scanf(%d %f %s, &i, &x, name); With input: 2554.32E-1Thompson Example:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 /* Fig 9.22: fig09_22.c */ /* Using an inverted scan set */ #include <stdio.h> int main() { char z[ 9 ] = { '\0' };
printf( "Enter a string: " ); scanf( "%[^aeiou]", z ); printf( "The input was \"%s\"\n", z ); return 0; }
Program Output:
Dale Roberts
Example:
1 /* Fig 9.24: fig09_24.c */ 2 /* Reading and discarding characters from the input 3 #include <stdio.h> stream */ 4 5 int main() 6 { 7 int month1, day1, year1, month2, day2, year2; 8 9 printf( "Enter a date in the form mm-dd-yyyy: " ); 10 scanf( "%d%*c%d%*c%d", &month1, &day1, &year1 ); 11 printf( "month = %d day = %d year = %d\n\n", 12 month1, day1, year1 ); 13 printf( "Enter a date in the form mm/dd/yyyy: " ); 14 scanf( "%d%*c%d%*c%d", &month2, &day2, &year2 ); 15 printf( "month = %d day = %d year = %d\n", 16 month2, day2, year2 ); 17 18 return 0;
19 }
Program Output:
Enter a date in the form mm-dd-yyyy: 11-18-2000 month = 11 day = 18 year = 2000 Enter a date in the form mm/dd/yyyy: 11/18/2000 month = 11 day = 18 year = 2000
Dale Roberts
putchar(c)
Example:
gets(line)
Example:
gets(buf); /* space is OK, and the \n wont be read in */ Newline will be replaced by \0
getchar()
Example:
c = getchar();
/* c must be int */
Dale Roberts