printf函数和scanf函数函数返回值
/*
Date: 2019年7月31日
Author:Zoey Wang
Function: 学习printf函数和scanf函数的返回值
*/
#include<stdio.h>
int main(void)
{
printf("printf函数的返回值:%d, (整型,字符串个数)\n", printf("zoey\n")); //printf函数的返回值类型为整型,会把所输出的字符个数返回
/*
result:
zoey
5
*/
int a, b;
printf("scanf函数的返回值:%d, (整型,正确格式的变量个数)\n", scanf("%d%d", &a, &b)); //scanf函数的返回值类型是整型,会返回其按照正确格式输入的变量个数
return 0;
}
/*
运行结果:
zoey
printf函数的返回值:5, (整型,字符串个数)
22
11
scanf函数的返回值:2, (整型,正确格式的变量个数)
*/
scanf函数的细节问题
(1)使用scanf函数输入数据,为什么需要按回车
回车可以刷新键盘缓冲区的内容。键盘缓冲区会有一个换行字符。
(2)scanf函数遇到错误输入会停止
(3)scanf函数的格式字符串中的字符分类:
①格式声明(格式说明符)
②空白字符(共有3种,换行,空格和tab('\n', ' ', '\t'))——scanf在读操作中忽略掉1个或者多个空白符。
③非空白字符——scanf在进行读操作的时候剔除掉与这个非空白字符一样的字符
(4)再输入时使用空白字符起到的数据间隔作用
/*
(1)使用scanf函数输入数据,为什么需要按回车——回车可以刷新键盘缓冲区的内容。键盘缓冲区会有一个换行字符。
(2)scanf函数遇到错误输入会停止
(3)scanf函数的格式字符串中的字符分类:
①格式声明(格式说明符)
②空白字符(共有3种,换行,空格和tab('\n', ' ', '\t'))——scanf在读操作中忽略掉1个或者多个空白符。
③非空白字符——scanf在进行读操作的时候剔除掉与这个非空白字符一样的字符
(4)再输入时使用空白字符起到的数据间隔作用
*/
#include <stdio.h>
int main(void)
{
/*学习scanf函数的注意事项(1)和(2)
char a = 'A'; //char 字符类型 可以存放单个字符 单个字符要用单撇号括起来
printf("%c\n", a);
int b;
scanf("%d", &b);
scanf("%c", &a);
if(a == '\n') //== 等于号 如果两边的表达式的值相等则整个表达式为真,否则为假
printf("a的值是一个换行符\n"); //如果正确输入b变量的值按下回车,则该句会被输出
printf("%c\n", a); //如果输入b变量的时候,输入了一个#号按下回车,则这里输出a就为一个#号字符
*/
/*学习scanf函数的注意事项(3)——②
int a;
scanf("%d\n", &a); //再输入完了a变量的值之后,只能通过一个错误的输入来结束scanf语句的执行
printf("%d\n", a);
*/
/*学习scanf函数的注意事项(3)——③
int a;
scanf("abc%dert", &a); //如果想输入a变量的值为23,应该输入:abc23ert
printf("%d\n", a);
*/
/*学习scanf函数的注意事项(4)
int a, b;
scanf("%d%d", &a, &b); //对于输入连续的整型或者浮点型数据,可以用空白符起到间隔数据的作用
printf("a = %d, b = %d\n", a, b);
*/
//学习scanf函数的注意事项(4)
char ch1, ch2;
scanf("%c%c", &ch1, &ch2);
printf("ch1 = %c, ch2 = %c.\n", ch1, ch2); //对于连续的字符类型输入,它们是有能力自己间隔数据的,所以再输入完一个字符之后,不必加空白字符,否则的话,会得到错误的结果
return 0;
}