
#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;

}