如何写一份企业网站建设方案,做网站可以抄袭别人吗,网站搜索页面怎么做,网站模板首页各位少年#xff1a;
我来分享一个输入函数#xff0c;scanf函数 是输入的函数#xff0c;scanf#xff08;“参数1”#xff0c;参数2);好#xff0c;我们接着看代码的例子
int main()
{
int score0;
printf(请输入成绩:);
scanf(%d,sco…
各位少年
我来分享一个输入函数scanf函数 是输入的函数scanf“参数1”参数2);好我们接着看代码的例子
int main()
{
int score0;
printf(请输入成绩:);
scanf(%d,score);//请输入成绩 取地址这个必须有除了数组大家记住即可
printf“%d”score//打印成绩
}
这是输入输出的过程接下来介绍scanf基本的用法
scanf函数用于读取用户的键盘输入。
程序运行到这个语句时会停下来等待用户从键盘输入用户输入数据按下回车键后
scanf就会处理用户的输入将其存入变量他的原型定义在stdio头文件上scanf和printf用法基本一致。看代码例子
scanf“%d”i
它的第一个参数是一个格式字符串里面会放置占位符与printf的占位符基本一致告诉编译器如何解决用户的输入需要提取的数据是什么类型。
这是因为C语言的数据都是有类型的scanf必须提前知道用户输入的数据类型才能处理数据
它的其余参数就是存放用户输入的变量格式字符串里面有多少个占位符就有多少个变量。
上面示例中scanf的第一个参数%d表示用户输入应该是一个整数%d就是一个占位符%是占位符的标志d表示整数。第二个参数i表示将用户从键盘输入的整数存入变量i。
注意变量前面必须加上运算符指针变量外因为scanf传统不是值而是地址即使变量i的地址指向用户输入的值。
如果这里的变量是指针变量比如字符串变量那就不用加运算符。
顺带一提 scanf_s函数是Vs提供的函数并非C语言提供的如果你在代码中使用scanf_s那么其他编译器可能不认识这个函数scanf_s这个函数是什么是 VS提供的一个库函数 VS认为这个scanf这个函数并不安全导致使其无法使用哪VS就不能用了吗你只需要在VS编译器第一行声明这段代码即可 使用Scanf
#define _CRT_SECURE_NO_WARNINGS
好我们稍微了解一下scanf的特性看一段代码。
#includestdio.h
int main()
{
char arr[5]{0};
scanf(%d,arr);
printf(%s\n,arr);return 0;
}
这是一个数组各位少年可能没见过 大家只要知道这个数组里只能存储五个字符就好了 但是你输出10个字符照样给你打印出来所以说scanf不管你输入什么都给你打印出来另外我前面介绍scanf的时候是不是要加个取地址但是这块没有因为数组本身就是地址大家先记住就好了
#includestdio.h
int main()
{
int a0;
int b0;
float c0.0;
doble d0.0;
scanf(%d%d%f%lf,a,b,f,d);
printf(%d %d %f $lf\n,a,b,f,d);return 0;
}
这是介绍如何打印浮点型和多精度浮点型的scanf使用方法scanf处理数值占位符时会自动过滤空白字符包括空格制表符换行符等。
我们再来看一段代码
#includestdio.h
int main()
{int x;float y;scanf(%d, x);printf(%d\n, x);scanf(%f, y);printf(%f\n, y);return 0;
}
输入13.55e12#0 13存进x里然后算出 55乘10的12幂这块考的是大家科学计数法的掌握
55乘与10的十二次方然后#就不是浮点数了直接待在缓冲区里头。
#includestdio.h
int main()
{int a 0;int b 0;int c 0;int r scanf(%d %d %d, a, b, c);printf(%d, r);return 0;
}
这里r的值是scanf的函数返回值成功输入进去几个返回值就是几这里只给了三个值如果输入第四个值他就会待在缓冲区里头因为不管输出几个返回值都是3.剩下的介绍一下scanf使用问题注意的事项看代码
#includestdio.h
int main()
{
int a0;
int b0;
int c0;
scanf(%d,%d,%d,a,b,c)
printf(%d,%d,%d,a,b,c);
return 0;
} 这块三个占位符每个都隔开逗号所以说我们输入的时候必须也逗号隔开不然我们无法打印所以说不建议大家这么使用
还记得我们说过scanf会忽略非输入字符吗这里补充一点也不绝对 比如说%c
#includestdio.h
int main()
{
char ch0;
int a20;
scanf(%d,a);
printf(%d\n,a);return 0;
}
看执行结果
这是执行的结果会自动忽悠空格但是打印的时候空格也算字符大家知道就好
如果强制跳过字符前的空白字符可以写成scanf“5c,ch);,即%c的加上一个空格表示跳过零个或多个空白字符
下面要特别说一下占位符%是它其实不能简单地等同于字符串。它的规则是从当前第一个非空白字符开始读起直到遇到空白字符即空格换行符制表符等为止
因为%s不会包含空白字符所以无法用来读取多给单词除非多个%s一起使用。这意味着scanf不适合读取可能包含空格的字符串\0。
scanf()将字符串读入字符数组时不会检测字符是否超过了数组长度。所以储存字符时很可能会超过数组的边界导致预想不到的结果。为了防止这种情况使用%s占位符时应该指定读入字符串的最长长度即使成%%【m】s其中的{m}是一个整数表示读取字符串的最大长度后面的字符将被丢弃。
#includestdio.h
int main()
{
char name[11];
scanf(%10s,name);return 0;
}
上面代码中name是一个长度为11的字符数组scanf()的占位符%10s表示最多 不管你输入是什么打印出来四个因为还有一个斜杠0斜杠0是字符结尾标志
赋值忽略符
有时用户的输入可能不符合预定的格式。
#includestdio.h
int main()
{
int year0;
int month0;
int day0;
scanf(%d-%d-%d,year,month,day);
printf(%d-%d-%d,year,month,day);
return 0;
}上面示例中如果用户输入2020-01-01就会正确解读出年月日。问题是用户可能输入其他格式比如2020/01/01这种情况下scanf解析数据会失败 。
为了避免这种情况scanf()提供了一个赋值忽略符*。只要把*加在任何占位符的百分号后面该占位符就不会返回值解析后将被丢弃。w
int main()
{
int year0;
int month 0;
int day0;
scanf(%d%*c%d%*c%d,year,month,day);
printf(5d %d %d\n,year,month,day);
return 0;
}
他们可以理解为读取一个字符然后再取掉不打印即可好了这篇文章分享到这里