【C语言学习笔记(三)】printf()函数和scanf()函数

printf()函数和scanf()函数能够让用户可以与程序进行交流,他们是输入/输出函数。printf()函数是输出函数,scanf()函数是输入函数,两个函数都使用格式字符串和参数列表。

一、printf()函数
printf()函数的格式:

printf(格式字符串,待打印项1,代打印项2,...);

待打印项1,代打印项2等都是要打印的项,它们可以是变量、常量,甚至是在打印之前先要计算的表达式。格式字符串包含每个待打印项对应的转换说明和实际要打印的字符。例如:

printf("The %d contestants ate %f berry pies.\n",number,pies);
//其中格式字符串是双引号括起来的内容,待打印项是number和pies的值。上述格式字符串中包含了两个待打印项的转换说明。

请求printf()函数打印数据的指令要与待打印数据的类型相匹配。一定注意:格式字符串中的转换说明一定
要和后面的每个项匹配,若不匹配将会导致严重的后果。
printf()函数使用%符号来标识转换说明,此时若我们想打印一个%符号,使用两个%即可将%打印出来。
1. printf()的常用转换说明修饰符
在%和转换字符之间插入修饰符可以修饰基本的转换说明。

修饰符 含义
-(标记) 待打印左对齐,即从字段的左侧开始打印该项。
+(标记) 有符号值若为正,则在前面显示加号;若为负,则在前面显示负号。
空格(标记) 有符号值若为正,则在值的前面显示前导空格(不显示任何符号);若为负,则在值前面显示减号标记并覆盖空格。
数字 最小字段宽度。如果该字段不能容纳待打印的数字或字符串,系统会使用更宽的字段。
.数字 精度—对于%e、%E、%f转换,表示小数点右边数字的位数;对于%s转换,表示待打印字符的最大数量;对于整型转换,表示待打印数字的最小位数。

2. 转换说明的意义
转换说明把以二进制格式存储在计算中的值转换成一系列字符(字符串)以便显示。例如,数字76在计算机内部的存储格式是二进制数01001100。%d转换说明将其转换成字符7和6,并显示为76;%x转换说明把相同的值(01001100)转换为十六进制计数法4c;%c转换说明把01001100转换为字符L。
转换并不是将原始值替换成转换后的值的意思,转换说明实际上是翻译说明的意思,%d的意思是“把给定的值翻译成十进制整数文本并打印出来”。
3. printf()的返回值
printf()函数有一个返回值,它返回打印字符的个数。如果有输出错误,printf()返回一个负值。

二、scanf()函数
scanf()把输入的字符串转换成整数、浮点数、字符或字符串。scanf()和printf()类似,也使用格式字符串和参数列表。scanf()中是格式字符串表明字符输入流的目标数据类型。两个函数主要区别在参数列表中。printf()函数使用变量、常量和表达式,而scanf()函数使用指向变量的指针。使用scanf()函数的两条简单规则:
(1)如果用scanf()读取基本变量类型的值,在变量名前加上一个&;
(2)如果用scanf()把字符串读入字符数组中,不要使用&。
scanf()函数使用空白(换行符、制表符和空格)把输入分成多个字段,在依次把转换说明和字段匹配时跳过空白。只要在每个输入项之间输入至少一个换行符、空格或制表符即可,可以在一行或多行输入。

注意:除了%c,其他转换说明都会自动跳过待输入值前面所有的空白。
scanf()函数返回成功读取的项数,如果没有读取任何项,且需要读取一个数字而用户却输入一个非数值字符串,scanf()返回0;当scanf()检测到“文件结尾”时,会返回EOF(EOF是stdio.h中定义的特殊值,通常用#define指令把EOF定义为-1)。

你可能感兴趣的:(C语言,c语言,学习,开发语言)