0
I cannot understand about scanf("%2d %d %*f %5s", &x, &y, text);
#include <stdio.h> int main() { int x, y; char text[20]; scanf("%2d %d %*f %5s", &x, &y, text); /* input: 1234 5.7 elephant */ printf("%d %d %s", x, y, text); /* output: 12 34 eleph */ return 0; } I cannot understand why resault come out 12 34 I understand about 12, but not 34. how output can show 34?? (5.7 is ignored by %*7. is it??)
1 Odpowiedź
+ 1
Example 1 :
/* Meaning : %2d of variable x
* it will reserve the output console with 2 character and
* if the number of digits of x are larger than the specifier
* then it will print with no spaces.
* If x is less than 2 digits then one space (padding to left) will be added
*/
scanf("%2d", &x); //input : 1234
printf("%d", x); //output : 12
scanf("%2d", &a); //input : 1
printf("%d", a); //output : 1
// =================================
Example 2 :
/* Meaning : %2d %d of variable x
* If there are remaining digits .. will be assigned to the next variable
*/
scanf("%2d %d", &x, &y); //input : 1234
printf("%d %d", x, y); //output : 12 34
// =================================
Example 3 :
/* Meaning : %2d %d %*f
* The same as example 2 but one float will be read from the console
* but it wouldn’t be assigned to any variable
*/
scanf("%2d %d %*f", &x, &y); //input : 1234 5.7
printf("%d %d", x, y); //output : 12 34
// =================================
Example 4 :
/* Meaning : %2d %d %*f %5s
* The same as example 3 but keep only 5 characters from the string variable
*/
scanf("%2d %d %*f %5s", &x, &y, text); //input : 1234 5.7 elephant
printf("%d %d %s", x, y, text); //output : 12 34 eleph