本文 我们来说 数据的输入与输出 及数据的运算
在程序的运算工程中 往往需要输入一些数据 而程序的运算 所得到的运算结果又需要输出给用户
因此 数据的输入与输出 就显得非常重要
在C语言中 不提供专门的输入输出语句
所有的输入输出 都是通过对标准库的调用 来实现的
一般 我们用 printf 和 scanf 函数
这两个函数 并不是C语言提供的输入输出语句,他们只是C语言中定义的函数,C语言提供的函数以库的形式存放在系统中
因此 在使用C语言库函数时 需要使用预编译命令#include 将相关的头文件(“.h”) 包含到用户源文件中
我们提到 printf 就是格式化 输出函数
它的功能就是 按用户指定的格式 将指定的数据 输入显示屏中
参考代码如下
#include <stdio.h>
int main() {
const char myString[] = "你好";
printf("%s\n", myString);
return 0;
}
这里 我们定义了一个常量 myString 值为字符串 内容 你好
然后 我们通过 printf 输出 指定符号 百分号S 意思是 以字符形式展示 还记得之前那个 百分号D吧 一个意识
运行结果如下
如果printf 内字符内容 如果没有特殊标识符 则 语句会将内部的内容输出在控制器上
#include <stdio.h>
int main() {
printf("hello world\n");
return 0;
}
格式转换说明符
在格式字符前可以添加修饰符说明,一般格式为
%[标志] [输出最小宽度[ [.精度】[长度] 格式字符
标志:标志字符为 (+、-、#、空格) 共4种
输出最小宽度:用十进制数来表示输出的最少位数。若实际位数多于定义的宽度,按实际位数输出,若实际位数少于定义的宽度则补以空格或0
精度:精度格式符以 . 开头,后跟十进制数。本项的意义是:如果输出数字,则表示小数的位数;如果输出字符串表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分
长度:长度格式符为h、l两种,hd表示按短整型量输出,ld表示按长整型量输出,f表示按浮点型双精度格式输出。
讲完输出函数 我们来说说 输入函数scanf
scanf 函数从标准输入(键盘)读取信息,按照格式描述把读入的信息转换为指定数据类型的数据,并把这些数据赋给指定的内存区域中。
基本格式如下 scanf(“%d”,&a);
意思是 百分号D 就是 让用户从键盘输入一个整数 然后赋值给系统的 a属性
格式控制字符串规定输入项中的变量以何种类型的数据格式被输入,形式是:
%[<修饰符>]<格式字符>
修饰符是可选的,修饰符如下:
字段宽度:按指定宽度输入数据。如:scanf(“%3d”,&a);输入123456,按宽度3输入一个整数123赋给变量a,其余部分被截去长度修正符1和h:可与d、0、x一起使用,l表示输入数据为长整型h表示输入数据为短整型。如果编译器支持_int64,用格式符%I64d
如果编译器支持long long,用格式符%lld
抑制字符 * 表示 作用是跳过相应的数据
例如 我们编写代码如下
#define _CRT_SECURE_NO_WARNINGS//禁用安全函数警告
#pragma warning(disable:6031)//禁用 6031 的安全警告
#include <stdio.h>
int main() {
int a;
int b;
int c;
scanf("%d%d%d",&a, &b, &c);
printf("%d %d %d\n",a,b,c);
return 0;
}
我们运行 然后 输入 1 2 3
运行结果如下
如果 我们这样写
#define _CRT_SECURE_NO_WARNINGS//禁用安全函数警告
#pragma warning(disable:6031)//禁用 6031 的安全警告
#include <stdio.h>
int main() {
int a;
int b;
int c;
scanf("%d%d%d",&a, &b, &c);
printf("%d %*d %d\n",a,b,c);
return 0;
}
然后 再运行 输入 1 2 3
简单说 a 的值 依旧是 1 b的值 是 3 c没有被赋值 因为第二次赋值被跳过了
使用scanf()函数应注意以下几点:
1 scanf()函数中没有精度控制。
2 scanf() 函数中要求给出变量的地址,如给出变量名则会出错。如scanf(“%d”,a)是非法的,应改为scanf(“%d”,&a)才正确。
3 在输入多个数值时,若格式控制串中没有非格式字符作为输入数据之间的间隔,则可用空格、制表符或回车作为分隔符。C编译在碰到空格、制表符、回车符或非法数据(如对"%d"输入"12A"时,A即为非法数据)时即认为数据输入结束
4 在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。