标准库实现了简单文本的输入输出模式。
以下的示例在使用时都需要先包含标准输入输出头文件stdio.h
- #include <stdio.h>
输入
getchar函数
int getchar(void);
- 从标准输入(一般为键盘)中一次获取一个字符
- 调用时,返回输入的字符
- 遇到文件结尾时返回EOF
- EOF也定义在stdio.h中,其值一般为-1,标志着输入或文件输入结束
代码示例
#include <stdio.h>
int main(int argc, char const *argv[])
{
int input_c = getchar();
printf("input char is : %c\n", input_c);
while((input_c = getchar()) != EOF){
printf("inputchar is %c\n", input_c);
}
return 0;
}
运行结果:
a //输入a和换行
input char is : a
inputchar is //输出换行
v//输入v和换行
inputchar is v
inputchar is
v//输入v和换行
inputchar is v
inputchar is
//输入ctrl+d结束输入,相当于输入EOF,退出程序
标准输入scanf函数
int scanf(char *format, …);
从标准输入中获取字符序列,按照format中指定的格式对字符序列进行解释,把结果保存到参数中
- 其他参数必须是指针,表示输入转换完成后结果存放的位置
- 返回成功赋值的参数个数
- 如果输入结束并全部转换完成返回EOF
format格式串 - 格式串中的空格和制表符会被忽略
- 普通字符,用于匹配输入流中的下一个非空字符
- 以%开头的转换说明
字符 | 参数类型 |
---|---|
d | 十进制数 |
i | 整数,十进制、八进制或十六进制 |
o | 八进制,可以以0开头,也可以不以0开头 |
u | 无符号十进制数 |
x | 十六进制,可以以0x/0X开头,也可以不以它们开头 |
c | 非空白字符,以指定宽度读取,要读取一个空白字符使用%1s |
s | 字符串,char*指向一个足够大小的字符数组 |
e,f,g | float类型,可以是指数形式 |
g,G | double类型,如果指数小于-4或者大于等于精度,用%e格式输出,否则用%f格式输出 |
p | void*类型指针 |
% | 打印一个% |
- d、i、o、u、x前可以加h表示存储变量为指向short类型,加l表示存储变量为指向long型的指针
- e、f、g前可以加l表示存储变量为指向double类型的变量
- 转换字符前可以加数字表示字段宽度
- %*表示跳过赋值
代码示例
#include <stdio.h>
int main(int argc, char const *argv[])
{
int a;
char c;
char s[10];
double d;
scanf("%d %c %s %lf", &a, &c, s, &d);
printf("a = %d, c = %c, s is %s, d=%f\n", a, c, s, d);
return 0;
}
运行结果:
10 a hello 10.5//依次输入然后回车结束本行输入
a = 10, c = a, s is hello, d=10.500000
输出
putchar函数
int putchar(int);
- 用于将字符输出到标准输出(一般为屏幕)中
- 返回输出的字符,如果输出有错误异常,返回EOF
代码示例
#include <stdio.h>
int main(int argc, char const *argv[])
{
int input_c = getchar();
putchar(input_c);
putchar('A');
putchar('\n');
return 0;
}
运行结果:
e//输入e回车
eA
格式化输出函数printf
int printf(char *format, arg1, arg2…);
- 将内部值通过格式化进行转换,打印到标准输出中,返回打印的字符个数
- char *format部分
- 普通字符串,原样不动地打印
- %开头的格式化转换说明,打印对应的arg参数转换结果
- %后的格式转换字母有如下几种
字符 | 参数类型 |
---|---|
d,i | 整型,十进制数 |
o | 整型,无符号八进制数 |
x,X | 整型,无符号十六进制数 |
u | 整型,无符号十进制数 |
c | 整型,单个字符 |
s | char*类型,字符串内容,直到遇到\0或指定精度的字符个数 |
f | double类型,十进制小数,小数点后位数由精度指定,默认6 |
e,E | double类型,m.dddexxx |
g,G | double类型,如果指数小于-4或者大于等于精度,用%e格式输出,否则用%f格式输出 |
p | void*类型指针 |
% | 打印一个% |
- %和转换字母之间可以有一些控制字符
- 负号,表示左对齐形式输出
- 数字,最小打印字段宽度,不够的用空格补齐
- 小数点加数字,表示字符串中最多打印的字符个数,浮点数中小数点位数
- l,表示long型打印
代码示例
#include <stdio.h>
int main(int argc, char const *argv[])
{
int a = 10;
char c = 'a';
char *s = "hello, world";
double d = 100.3666;
printf("a: %d\n", a);//%d整型
printf("c: %2c--\n", c); //%c宽度为2
printf("s: %s\n", s); //%s字符串
printf("d: %.3f\n", d);//%f 浮点数3位小数精度
printf("s: %10.5s\n", s); //宽度10最多显示5个字符
printf("s: %-20s\n", s);//左对齐
return 0;
}
运行结果:
a: 10
c: a--
s: hello, world
d: 100.367
s: hello
s: hello, world
标签:字符,int,输入输出,C语言,char,标准,printf,input,输入
From: https://blog.csdn.net/DigitalMohan/article/details/137118693