putchar(c)
:字符输出函数C 语言无I/O语句,I/O操作由函数实现
#include <stdio.h>
字符输出函数
格式:putchar(c)
参数:c为字符常量、变量或表达式
功能:把字符c输出到显示器上
返回值:正常时,为显示的代码值
查询:
man putchar
int putchar(int c);
案例:
前置知识:ASCII表
大写A的ASCII值:65
小写a的ASCII值:65+32 = 97
#include <stdio.h>
int main( )
{
int a=97;
char ch = ‘A‘;
putchar(a); // 通过ASCII表打印字符a
putchar(‘\n‘); // 换行
putchar(ch); // 直接打印大写字符A
return 0;
}
printf
:格式(化)输出函数格式:printf("格式控制串", 输出表)
格式符号 | 作用 |
---|---|
i, d | 十进制整数 |
x, X | 十六进制无符号整形 |
o | 八进制无符号整型 |
u | 无符号十进制整数 |
c | 单一字符 |
s | 字符串 |
e,E | 指定形式浮点小数 |
f | 小数形式浮点小数 |
g | e和f中较短的一种 |
%% | 百分号本身 |
修饰符 | 作用 |
---|---|
m | 输出数据域宽;当数据长度<m,左补空格;当数据长度>m,按照实际输出(失效) |
.n | 对于实数,指定小数点后位数,(末位)按照四舍五入规则;对于字符串,指定实际输出位数; |
- | 输出数据在域内左对齐(缺省右对齐) |
+ | 指定在有符号数的整数前显示正号 |
0 | 输出数值时,指定右边不使用的空位置自动填0 |
# | 在八进制和十六进制数前显示导0,0x |
l | 在d,o,x,u前,指定输出;和整数转换说明符一起使用,表示一个long int或unsigned long int类型值 |
ll | 在e,f,g前,指定输出精度为double型;和整数转换说明符一起使用,表示一个long long int或unsigned long long int类型值(C99) |
getchar
字符输入函数格式:int getchar(void)
功能:从键盘中读取一个字符
返回值:
Ctrl + D
,程序返回-1;#include <stdio.h>
int main( )
{
int ch; // 定义一个整形
printf("#suomi:"); // 通过printf格式化输出函数,输出信息
ch = getchar(); // 获取用户输入的一个字符
putchar(ch); // 输出用户的输入
putchar(‘\n‘); // 换行
printf("ch=%d\n", ch); // 打印输入字符的ASCII值
return 0;
}
scanf
格式输入函数格式:scanf("格式控制串",地址表);
回车键
结束输入格式输入函数
格式符号 | 作用 |
---|---|
格式符号 | 作用 |
i, d | 十进制整数 |
x, X | 十六进制无符号整形 |
o | 八进制无符号整型 |
u | 无符号十进制整数 |
c | 单一字符 |
s | 字符串 |
e | 指定形式浮点小数 |
f | 小数形式浮点小数 |
修饰符
修饰符 | 功能 |
---|---|
h | 用于d,o,x前,指定输入为short型整数 |
l | 用于d,o,x前,指定输入为long型整数;用于e,f前,指定输入weidouble型实数 |
m | 指定输入数据宽度,遇到空格或不可转换字符结束 |
* | 抑制符,指定输入项读入后不赋值给变量 |
案例1
#include <stdio.h>
int main( )
{
int ch, n; // 定义一个整形
printf("#suomi:"); // 通过printf格式化输出函数,输出信息
n = scanf("%d",&ch); // 获取用户输
if (n > 0){ // 通过判断n的值判断是否输入成功
// 错误处理
}
// 特别说明:
n = scanf("please input pass:%x", &ch); // please input pass:为必须输入的值,输入示例: `please input pass:A`
putchar(‘\n‘); // 换行
printf("%d %d \n",n, &ch); // 输出用户的输入
return 0;
}
案例2:获取用户输入时间
#include <stdio.h>
int main() {
int y, m, d;
printf("#suomi:");
// scanf("%d%d%d", &y, &m, &d); // 未优化的代码
scanf("%4d%2d%2d", &y, &m, &d); // 优化后的代码
printf("%d:%d:%d\n", y, m, d);
return 0;
}
小知识总结:
scanf("%2d %*3d %2d", &a,&b);
// 若输入 12 345 67 则a为12, b为67, *3d表示舍去中间的3位数字
%c
格式符,空格和转义字符作为有效字符上输入scanf("%c%c%c", &c1, &c2, &c3);
// 若输入a b c, %c获取空格和转义符号
// 则c1 为a, c2为空格, c3为b
#include <stdio.h>
int main() {
int a;
char x;
printf("#suomi:");
scanf("%d",&a);
scanf("%c",&x);
printf("%d:%c:%d\n", a,x,x);
return 0;
}
回收方法:
getchar()函数
#include <stdio.h>
int main() {
int a;
char ch;
printf("#suomi:");
scanf("%d",&a);
getchar(); // 使用getchar()销毁空格
ch = getchar();
printf("%d:%c:%d\n", a,ch,ch);
return 0;
}
%*c
来销毁// 空格:
int x;
scanf(" %c", &x);
gets
格式:char * gets(char *s)
功能:从键盘输入一回车结束的字符串放入字符数组中自动添加‘\0‘
说明:
scanf函数
不同,gets
函数并不以空格作为字符串输入结束标志#include <stdio.h>
#define N 5
int main() {
char s[N+1]; // 应该与目标输入多一个地址空间用于存放\0
gets(s);
printf("%s\n", s);
return 0;
}
puts
格式:int puts(const char *s);
功能:向显示器输出字符串(输出完,自动换行)
说明:字符数组必须以‘\0‘
结束
#include <stdio.h>
#define N 5
int main() {
char s[N+1]; // 应该与目标输入多一个地址空间用于存放\0
gets(s);
printf("%s\n", s);
puts(s);
return 0;
}
原文:https://www.cnblogs.com/liangchangyou/p/13263795.html