第四章 C 语言中的输入和输出
回顾 赋值运算符 算术算运符 比较运算符 逻辑运算符 位运算符 转换 运算符的优先级
目标 理解带格式的输入/输出函数 - scanf() 和 printf() 使用字符输入/输出函数 - getchar() 和 putchar()
标准输入/输出 C 语言中的标准库提供了输入和输出函数 标准库提供: 输入/输出函数来处理输入、输出、字符 和字符串操作 标准库提供: 输入/输出函数来处理输入、输出、字符 和字符串操作 标准输入通常是指键盘 标准输出通常是指显示器(也称控制台) 可以用文件代替标准输入和输出设备
头文件 <stdio.h> 这是一个预处理命令 stdio.h 是一个文件,称为头文件 #include <stdio.h> 这是一个预处理命令 stdio.h 是一个文件,称为头文件 包括对应于 C 语言程序中使用的输入/输出函数的宏 所设计的 printf()、scanf()、putchar()、getchar() 等函数需要使用头文件中的这些宏才能正确执行
带格式的输入/输出 printf() – 用于带格式的输出 scanf() – 用于带格式的输入 能以用户控制下的各种预指定格式读入和输出数据 格式说明符指定了变量值输入和输出的格式
printf ()-1 用于在标准输出设备控制台上显示数据 语法格式: printf ("control string ", argument list); 控制字符串 参数列表 都需要一个格式命令-与参数列表需要在数量、类型和顺序上匹配 需要由“ ”括起来。由文本字符和空格、格式命令和非打印字符组成
控制字符串由三类项目中的一项或多项组成: printf ()-2 控制字符串由三类项目中的一项或多项组成: 文本字符:由可打印字符组成 格式命令: 以 % 符号开始,随后紧跟与数据项相应的格式代码 非打印字符:包括制表符、空格和新行
格式代码-1 上表中,c、d、f、lf、e、g、u、s、o 和 x 都是类型说明符 格式 printf() scanf() 单字符 %c 字符串 %s 带符号的十进制整数 %d 浮点数 (十进制记数法) %f %f 或 %e %lf 浮点数(指数计数法) %e 浮点数( %f 或 %e 中较短的一个) %g 不带符号的十进制整数 %u 不带符号的十六进制整数(使用“ABCDEF”) %x 不带符号的八进制整数 %o 上表中,c、d、f、lf、e、g、u、s、o 和 x 都是类型说明符
格式代码-2 上表总结了各种代码的输出约定 格式代码 输出约定 %d 整数的数字位数 %f 数字的整数部分如实输出。小数部分保留 6 位。如果小数部分不是 6 位,末尾填零;否则,四舍五入取到 6 位 %e 小数点左侧保留一位数字,右侧保留 6 位数字(与上面的 %f 相同) 上表总结了各种代码的输出约定
控制字符串特殊字符 由于%\和“在控制字符中有特殊用途,因此如果 需要输出这些字符,按照上表的方式使用 格式代码 输出约定 \\ 输出 \ 字符 \ " 输出 " 字符 %% 输出 % 字符 \n 换行 \t 水平制表(跳到下一个tab位置) 由于%\和“在控制字符中有特殊用途,因此如果 需要输出这些字符,按照上表的方式使用
控制字符串与格式代码 …… 编号 语句 控制字符串 控制字符串包括的内容 参数 列表 参数列表的说明 屏幕 显示 1. printf("%d",300); %d 仅由格式命令组成 300 常量 2. printf("%d",10+5); 10 + 5 表达式 15 3. printf("Good Morning Mr. Lee. "); 早上好 李先生. 仅由文本字符组成 无 Good Morning Mr. Lee. 4. int count = 100; printf("%d", count); count 变量 100 ……
printf() 示例 显示整数、浮点数和字符串的程序 #include <stdio.h> void main() { int a = 10; float b = 24.67892345; char ch = 'A'; printf("Integer data = %d\n", a); printf("Float Data = %f\n",b); printf("Character = %c\n",ch); printf("This prints the string\n"); printf("%s","This also prints a string\n"); }
printf() 中的修饰符-1 “-” 修饰符 字符宽度修饰符 数据项在范围内向左对齐,从范围最左侧的位置开始输出数据项 可以用于浮点型、双精度型和字符数组型(字符串)。 范围宽度修饰符是一个整数,定义了数据项的 最大范围宽度。
printf() 中的修饰符-2 精度修饰符 “0” 修饰符 “l” 修饰符 可以用在浮点型、双精度型或字符数组型(字符串)中。如果用在浮点型或双精度型数据中,数字字符串表示小数右侧最多可输出的数字位数 “0” 修饰符 字段的默认填充符是空格。如果用户希望用零作为填充符,需要使用此修饰符 “l” 修饰符 可以借助于此修饰符将整数显示为长整型或双精度型参数。相应的格式代码为 %ld
printf() 中的修饰符-3 “h” 修饰符 “*” 修饰符 此修饰符用于显示短整数。 相应的格式代码为 %hd 如果用户不希望预先指定字段宽度, 而希望程序来指定,则需要用到此修饰符
修饰符示例 printf()中的修饰符的使用的示例 #include <stdio.h> void main() { printf("The number 555 in various forms:\n"); printf("Without any modifier: \n"); printf("[%d]\n",555); printf("With – modifier :\n"); printf("[%-d]\n”,555); printf("With digit string 10 as modifier :\n"); printf("[%10d]\n”,555); printf("With 0 as modifier : \n"); printf("[%0d]\n”,555); printf("With 0 and digit string 10 as modifiers :\n"); printf("[%010d]\n”,555); printf("With -, 0 and digit string 10 as modifiers: \n"); printf("[%-010d]\n",555); } printf()中的修饰符的使用的示例
scanf() 用于接受数据 的通用格式 scanf("control string ", argument list); 控制字符串 参数列表 printf()语句中的使用的格式极其语法同 样适用与scanf()语句
printf() 和 scanf() 参数列表之间的区别 如果希望读取基本数据类型变量的值,应在变量名的前面加上符号& 当读取指针变量指向的值时,在变量名前不能使用 &
printf() 和 scanf() 格式命令之间的区别 没有 %g 选项 格式代码 %f 和 %e 在效果上是一样的
scanf() 示例 scanf()使用非打印字符来判断输入数据是什么时候开始和结束的 可以忽略空白区域和行边界来获取数据 程序示例 #include <stdio.h> void main() { int a; float d; char ch, name[40]; printf("Please enter the data\n "); scanf("%d %f %c %s", &a, &d, &ch, name); printf("\nThe values accepted are : %d, %f, %c, %s", a, d, ch, name); } 程序示例 scanf()使用非打印字符来判断输入数据是什么时候开始和结束的 可以忽略空白区域和行边界来获取数据
缓冲输入/输出 用于读取和写入 ASCII 字符 是一块临时的存储区域,或在内存中,或在设备的控制卡上 控制台输入/输出 缓冲输入/输出 缓冲文件输入/输出
控制台输入/输出 控制台输入/输出函数将其操作指向系统的标准输入和输出 C 中最简单的控制台输入/输出是: getchar() – 从键盘读取一个(且仅一个)字符 putchar() – 在屏幕上输出一个字符
getchar() 用于从键盘读取输入数据,方式为一次读一个字符 缓冲字符,直到用户按回车键
getchar() 示例 getchar()的使用示例 #include <stdio.h> void main() { char letter; printf("\nPlease enter any character: "); letter = getchar(); printf("\nThe character entered by you is %c", letter); } getchar()的使用示例
putchar() C 中的字符输出函数 需要参数 单字符常量 转义序列 字符变量 putchar() 函数的参数
putchar() 的选项和效果 参数 函数 效果 字符变量 putchar(c) 显示字符变量 c 的内容 字符常量 putchar('A') 显示字母 A 数值常量 putchar('5') 显示数字 5 转义序列 putchar('\t') 在光标位置插入制表符 putchar('\n') 在光标位置插入回车
putchar() 示例 #include <stdio.h> void main() { putchar('H'); putchar('\n'); putchar('\t'); putchar('E'); putchar('\n'); putchar('\t'); putchar('\t'); putchar('L'); putchar('\n'); putchar('\t'); putchar('\t'); putchar('\t'); putchar('O'); } 示例
总结 本课主要讲解了以下内容: 带格式的输入、输出函数 scanf()函数 printf()函数 字符的输入和输出 getchar()函数 putchar()函数