int main(){    int month,day,year;        printf( "Enter a date in the form mm-dd-yyyy: " );   scanf( "%d%*c%d%*c%d", &month, &day, &year );   printf( "month = %d  day = %d  year = %d\n\n", month, day, year ); return 0; }
Output:Enter a date in the form mm-dd-yyyy:03-12-2011month = 03 day = 12 year = 2011
Explanation:as we write the input:03-12-2011scanf discards the character - because we used %*c to discard that character...there can be any character at the place of -...............
2. int main(){    int i,j;       printf( "Enter the numbers: " );   scanf( "%d/*/%d", &i,&j );   printf( "%d %d", i,j); return 0; }
output:Enter the numbers:4/*/54 5
Explanation:now we enter the numbers in this format 4/*/5 because  scanf( "%d/*/%d", &i,&j ) consist /*/, and it discards this................ so i = 4 and j = 5..............
*****************************************
lets take one more example with field width and *
int main()
{
int a,b;
scanf("%d%*4c%d",&a,&b);
printf("a=%d,b=%d",a,b);
return 0;
}
/*before discussing its output.....firstly understand wht %*4c will do.......it will discard the 4 characters from the input string........*/
OUTPUT:
12abcd34
a=12
b=34
Explanation:
as the input string is 12abcd34.....the scanf start reading the characters 1..2..a.. as 'a' comes it start discarding the characters......n discard 4 characters continuously and then remaining characters i.e. 34 are in b variable....n suppose if d input string is 12abcde thn b has some garbage value........bcoz 'e' will not match with %d................
 
 
 
why b has some garbage value..........
ReplyDeletehere b is not taking garbage value, it takes 34 i.e. after four characters abcd in the input i have taken above, as i said above %*4c discards four characters from input, hence var b has value 34
ReplyDelete