IO专题 - input & output
- 优先使用标准IO(跨平台兼容)
标准IO
格式化输入输出
-
格式化输入 scanf 完整的格式内容参考 格式规范字段:scanf 和 wscanf 函数、scanf 类型字段字符、scanf 宽度规范
-
scanf是格式化输入,那么输入时要严格按照定义的 format 格式输入。所以定义 format 时尽量不要加多余的内容,除非有明确要求。 int a, b; scanf("%d%d", &a, &b); // format 未定义其他描述,那么输入时两个数直接可以用 空格 或 tab 或 换行 进行隔开。
-
scanf 使用 %s 时,输入中间不能有间隔符出现。 char str[32]; scanf("%s", str); // 输入 "hello world" 实际读入只有 "hello",因为字符串之间有间隔符出现,导致输入结束。 str本身就是地址,所有不需要&来取地址。
-
scanf 使用 %s 时要防止越界。
-
使用 scanf 应当校验输入,确保输入成功。
-
scanf 读取数字后 紧随 getchar() 会带来很麻烦的问题。scanf 输入的结束符会影响到getchar()
-
格式化输出 printf 完整的格式内容参考 格式规范语法:printf 和 wprintf 函数
-
字符输入输出函数:getchar,putchar;字符串输入输出函数:gets(危险的,不对buffer进行校验),puts;示例参阅文档。
类型 | scanf输入语句 |
---|---|
int a; |
scanf("%d", &a); |
float a; |
scanf("%f", &a); |
double a; |
scanf("%lf", &a); |
char a; |
scanf("%c", &a); |
long long a; |
scanf("%lld", &a); |
char a[5]; |
scanf("%s", a); |
类型 | printf输出语句 | 说明 |
---|---|---|
int a; |
printf("%d", a); |
|
float a; |
printf("%f", a); |
|
float a; |
printf("%g", a); |
打印最短形式的浮点数 |
double a; |
printf("%lf", a); |
|
char a; |
printf("%c", a); |
|
long long a; |
printf("%lld", a); |
|
char a[5]; |
printf("%s", a); |