#include <stdio.h>
/*
* int scanf(char *format, arg1,...) //返回成功保存的参数个数
* 以format将标准输入保存到{参数指向的地址}中,arg1等参数必须为地址指针
*
* int sscanf(char *string, char *format, arg1, arg2, ...);
* 从string中读取数据
*/
/*
* d,u,i,o,x的前面可以加 h 表示short,l(ell)表示long
*/
void scanfInteger(){
int n;
scanf( "%d", &n); //按照十进制将整数读入,并存在n的地址空间中
printf( "%d\n", n);
scanf( "%u", &n); //按照十进制将无符号整数读入
printf( "%d\n", n);
scanf( "%i", &n); //按照八进制(0开头)或者十六(0x开头)进制读入
printf( "%d\n", n); //若输入017,输出15 //若输入0xf,输出15
scanf( "%o", &n); //按照八进制(0开头可有可无)读入
printf( "%d\n", n); //若输入17,输出15 //若输入017,输出15
scanf( "%x", &n); //按十六进制(0x开头可有可无)读入
printf( "%d\n", n); //若输入0xf,输出15 //若输入f,输出15
}
/*
* %c 读取下一个字符,注意有可能是空字符,若要录入第一个非空字符,请用%1s
* %c 相当于 getchar()
*/
int scanfCharString(){
char ch;
char str[20];
scanf( "%c, %s", &ch, str); //输入a,amao
printf( "%c %s\n", ch, str); //输出a amao
}
/*
* f,e,g以不同的格式录入float,lf表示录入的double而非float
* 输入:12.34 12.34 12.34 12345.6789
* 输出:12.340000 1.234000e+01 12.34 12345.678900
*/
int scanfFloat(){
float f1, f2, f3;
double d1;
scanf( "%f %e %g %lf", &f1, &f2, &f3, &d1);
printf( "%f %e %g %f\n", f1, f2, f3, d1);
}
void sscanfTest(){
int n, num;
float f;
num = sscanf( "123 12.34", "%d %f", &n, &f);
printf( "n = %d f = %f num = %d \n", n, f, num);
}
int main1( int argc, char** argv) {
scanfInteger();
scanfCharString();
scanfFloat();
sscanfTest();
return 0;
}