Scanf函数介绍
- scanf函数是一个阻塞式函数:程序会停在Scanf函数出现的地方,直到接收到的数据才会执行后面的代码
- scanf函数原型包含在标准输入输出头文件"stdio.h"中,用于接收键盘输入的内容
- 格式:scanf("%d",&num)
int main(int argc, const char * argv[]) {
// 1.定义变量
int number;
// 2.利用scanf函数接收用户输入的数据
scanf("%i", &number);// 注意: 必须告诉scanf函数变量的详细地址, 才能存储用户输入的数据
// 3.输出接收到的数据
printf("number = %i", number);
return 0;
// 0.提示用户输入数据
printf("亲, 请输入两个数字, 以回车键结束\n");
// 1.定义两个变量保存用户输入的数据
int num1, num2;
// 2.利用scanf接收用户输入的数据
// 注意: 利用scanf接收多个数据的时候, 输入的内容要求和"格式化字符串"中的一模一样
// 如果输入的数据与格式化字符串中的不匹配, 那么scanf函数会自动终止
// scanf("%i,%i", &num1, &num2);
// 如果多个数据之间没有其它字符, 那么可以利用 空格, 回车, table来作为分隔
// 但是, 如果格式化字符串中有%c除外
// scanf("%i%i", &num1, &num2);
char charValue;
// 输入: 123-->num1, a -->charValue, 456-->num2
// 技巧: 无论想接收什么类型的数据, 只要有需要一次性接收多个, 就给每一个数据之间加上固定的符号作为分隔符(例如: ,)
scanf("%i-%c-%i", &num1, &charValue, &num2);
// 3.将接收到的两个数相加
// int result = (num1 + num2);
// 4.输出两个数验证结果
// printf("result = %d", result);
printf("num1 = %i, char = %c , num2 = %i", num1, charValue, num2);
*/
// 3.\n问题
int number, number2;
// \n代表换行
// 如何告诉scanf函数我们输入完毕? 回车 == \n
// 因为回车是scanf的结束符, 所以不能在scanf的格式化字符串末尾写上\n
// 如果不小心把\n放到了scanf格式化字符串的末尾, 也可以破, 原样输入或输入一个不匹配的类型
scanf("%i\n%i\n", &number, &number2);
printf("number = %i , number2 = %i\n", number, number2);
}
Scanf函数的实现原理
int main(int argc, const char * argv[]) {
// 添加断点快捷键: command + \
// 1.提醒用户
// printf("请输入两个整数 , 整数之间用逗号隔开, 使用回车结束\n");
// 2.定义变量保存用户输入的数据
int num1, num2;
char charValue;
// 3.接收用户输入的数据
// num1 = 123, charValue = + , num2 = 456
scanf("%i%c%i", &num1, &charValue, &num2);
// 4.求差
// int result = num1 - num2;
// 5.输出验证
// printf("result = %i\n", result);
printf("num1 = %i, cahrValue = %c, num2 = %i\n", num1, charValue, num2);
// 用户输入-->输入缓冲区-->scanf
char charValue2;
int num3;
// scanf只要输入缓冲区中有内容, 就不会要求用户输入数据
scanf("%c%i", &charValue2, &num3);
printf("charVaue2 = %c, num3 = %i\n", charValue2, num3);
return 0;
}
网友评论