版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/44808459
直接上代码,因为我的所有的学习过程都在注释里面呢。
#include
/**
* 这篇主要学习的是scanf函数
* 经过查阅资料才会发现
* scanf函数里面还是有很多东西的
*
* @brief main
* @return
*/
int main(void)
{
int a; //int类型
char b; //char类型
float c; //float类型
double d; //double类型
char* str; //字符数组
scanf("%d",&a); //scanf接收的是地址,&a是获取a的地址
printf("%d\n",a);
/**
* 由于每按下一个ENTER键,键盘向缓冲区发送一个'\r'和一个
* '\n',其中'\r'暂且理解为被忽略了
* 如果不清空缓冲区的内容的话,则缓冲区中还会存在一个'\n'
* 就会被scanf接收
* @brief getchar
*/
getchar(); //目的是将输入缓冲区中的内容清空
/**
* 先测试一下,没有getchar的效果
* 测试代码
* int a,b;
* scanf("%d",&a);
* printf("%d\n",a);
* scanf("%c",&b);
* if(b == '\n'){
* printf("next line"); //该行被执行了
* }else{
* printf("no");
* }
*/
/**
* 由上面的测试可以得出结论,在使用
* scanf函数的时候,一定要多加小心
* 很容易出现问题的
*/
scanf("%c",&b);
printf("%c\n",b);
getchar(); //不要忘记奥
scanf("%f",&c);
printf("%f\n",c);
getchar();
scanf("%lf",&d);
printf("%lf\n",d);
getchar();
scanf("%s",str); //由于str本身自己就是指针了,所以就不用&
printf("%s\n",str);
getchar();
//有关于scanf的一些用法
//第一个格式要一致
int m,n;
scanf("%d%d",&m,&n);//在输入过程中,只能是"1 2"
printf("m = %d,n = %d\n",m,n);
getchar();
scanf("%d,%d",&m,&n);//在输入过程中,只能是"1,2"
printf("m = %d,n = %d\n",m,n);
//getchar();
//scanf("%20s",str);//最多获得20个字符,如果少,在输入结尾处返回
//如果多,最多获取20个字符
//printf("%s\n",str);
//getchar();
//scanf("%[A-Z]",str); //仅仅获取大写字母
//printf("%s\n",str);
getchar();
scanf("%[^\n]",str); //获取除了换行符之外的所有字符,这样的话就可以接受空格了
printf("%s\n",str);
return 0;
}