赞
踩
我们学习c语言时最重要的函数莫过于输入和输出函数,他们几乎是我们的命脉!感觉如果失去了他们就会感觉失去人机交互!
所以我今天就来讲一下输入函数scanf_s()!别以为你学懂了,因为我一开始也这样以为。
个人比较喜欢直接用代码和注释讲解,这样比较直接
#include<stdlib.h> #include<stdio.h> #include<string.h> #define max 100 //1.scanf_s的由来: // scanf_s是微软的VS中独有的函数 //并且在VS中早就已经抛弃了scanf转而使用scanf_s //scanf_s是VS自己创建的函数 //2.scanf_s的和scanf的区别: //scanf由于其安全性太低,so微软就直接用scanf_s代替他了 //所以凡是有_s为后标的都是因为微软处于安全性考虑而自己创建的函数 //当然那些无_s的函数都被弃用代替掉了 //而最主要scanf_s需要在其中设置变量的长度以保证安全性! //注意:主要是%s,%c的类型! //单数值型输入 void num_scanf_s() { double n1; printf("请输入任意一个数:"); scanf_s("%lf", &n1); printf("n1 = %f\n", n1); printf("=========单数值型输入函数完毕=========\n"); } //多数值型分布输入 void nums_scanf_s1() { int n1; float n2; double n3; printf("请输入任意一个整数:"); scanf_s("%d", &n1); printf("请输入任意一个float型浮点数:"); scanf_s("%f", &n2); printf("请输入任意一个double型浮点数:"); scanf_s("%lf", &n3); printf("n1 = %d\tn2 = %f\tn3 = %f\n", n1,n2,n3); printf("=========多数值型分布输入函数完毕=========\n"); } //多数值型合并输入 void nums_scanf_s2() { int n1; float n2; double n3; printf("请输入任意一个整数,一个float型浮点数,一个double型浮点数(用空格分割或者输入一个回车再输入):\n"); scanf_s("%d %f %lf", &n1,&n2,&n3); //这样并起来写也行scanf_s("%d%f%lf", &n1,&n2,&n3); printf("n1 = %d\tn2 = %f\tn3 = %f\n", n1, n2, n3); printf("=========多数值型合并输入函数完毕=========\n"); } //************************************************************************************************************** //单字符型输入 void char_scanf_s() { char c; printf("请输入一个单字符:"); scanf_s(" %c", &c,1);//在变量前加一个空格清楚缓冲区变量后一定要跟上变量长度! printf("c = %c\n", c); printf("=========单字符型输入函数完毕=========\n"); } //单字符型分步输入 void chars_scanf_s1() { char c1; char c2; char c3; printf("请输入一个单字符:"); scanf_s(" %c", &c1, 1);//在变量前加一个空格清楚缓冲区变量后一定要跟上变量长度! printf("请输入一个单字符:"); scanf_s(" %c", &c2, 1); printf("请输入一个单字符:"); scanf_s(" %c", &c3, 1); printf("c1 = %c\tc2 = %c\tc3 = %c\n", c1, c2, c3); printf("=========单字符型分步输入函数完毕=========\n"); } //多字符型合并输入 void chars_scanf_s2() { char c1, c2, c3; printf("请输入三个单字符(用空格分割或者输入一个回车再输入):\n"); scanf_s(" %c %c %c", &c1, 1, &c2, 1, &c3, 1); //注意:和数值型那样并起来写不行!scanf_s("%c %c %c", &c1, 1, &c2, 1, &c3, 1); //一定要有空格清空缓冲区! printf("c1 = %c\tc2 = %c\tc3 = %c\n", c1, c2, c3); printf("=========多字符型合并输入函数完毕=========\n"); } //字符串型输入 void str_scanf_s() { char s1[max]; printf("请输入任意字符串:"); scanf_s("%s", &s1, max); printf("s1 = %s\n", s1); printf("=========字符串型输入函数完毕=========\n"); } //字符串型输入(可输入句子) void str_scanf_s2() { char s1[max]; printf("请输入任意字符串(可以是句子):\n"); getchar();//清空缓冲区,fflush函数试了没啥用,可能是我没理解透 //但是我还是觉得直接getchar函数清空实在一点 gets_s(s1,max); printf("s1 = %s\n", s1); printf("=========字符串型输入函数完毕=========\n"); } //混合数据类型 void mix_scanf_s() { int n1; float n2; double n3; char c1; char s2[max]; printf("请输入整数,float型,double型,单字符,字符串(用空格分割或者输入一个回车再输入):\n"); scanf_s(" %d %f %lf %c%s", &n1, &n2, &n3, &c1, 1, &s2, max); printf("n1 = %d\tn2 = %f\tn3 = %f\tc1 = %c\ts2 = %s\n", n1,n2,n3,c1,s2); printf("=========混合数据类型合并输入函数完毕=========\n"); } int main() { int choose; while (1) { printf("=============================================\n"); printf("--------------------1.单数值型scanf_s()----\n"); printf("--------------------2.多数值型分步scanf_s()\n"); printf("--------------------3.多数值型合并scanf_s()\n"); printf("--------------------4.单字符型scanf_s()----\n"); printf("--------------------5.单字符型分步scanf_s()\n"); printf("--------------------6.单字符型合并scanf_s()\n"); printf("--------------------7.字符串型scanf_s()----\n"); printf("--------------------8.混合数据类型scanf_s()\n"); printf("--------------------9.程序退出exit-----------\n"); printf("=============================================\n"); printf("请输入你的选择:"); scanf_s("%d", &choose); if (choose == 9) { printf("程序退出》》》"); break; } switch (choose) { case 1: num_scanf_s(); break; case 2 : nums_scanf_s1(); break; case 3: nums_scanf_s2(); break; case 4: char_scanf_s(); break; case 5: chars_scanf_s1(); break; case 6: chars_scanf_s2(); break; case 7: str_scanf_s(); str_scanf_s2(); break; case 8: mix_scanf_s(); break; default: printf("!error!\a"); break; } } return 0; }
程序执行截图:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。