1. putchar()函数简介
在C语言中,putchar()函数是一个用于输出单个字符的函数。它的原型为:int putchar(int c);
其中,c为要输出的字符,函数返回值为输出的字符的ASCII码。
putchar()函数一般用于控制台输出,其功能类似于printf()函数中的%c转换标志。但与printf()不同的是,putchar()每次只能输出一个字符,而不能输出字符串。
2. putchar()函数的使用
2.1 标准输出示例
可以使用putchar()函数输出单个字符。例如,下面的代码输出大写字母A:
#include <stdio.h>
int main()
{
putchar('A');
return 0;
}
注:其中,字符常量'A'的ASCII码为65。
运行结果为:
A
此外,也可以将字符存到一个变量中,再输出这个变量。例如:
#include <stdio.h>
int main()
{
char a = 'B';
putchar(a);
return 0;
}
注:字符常量'B'的ASCII码为66。
运行结果为:
B
2.2 文件输出示例
putchar()函数还可以与文件输出流搭配使用,将字符输出到文件中。例如:
#include <stdio.h>
int main()
{
FILE *fp = fopen("output.txt", "w"); // 打开文件output.txt
if(fp == NULL) // 判断文件是否成功打开
{
printf("文件打开错误!\n");
return 1;
}
putchar('C'); // 将字符C输出到文件中
fclose(fp); // 关闭文件
return 0;
}
运行结果为:在当前目录下生成一个output.txt文件,其中包含一个字符C。
3. putchar()函数的应用
3.1 控制台输入密码的隐藏输入
在输入密码的场景下,由于密码属于敏感信息,所以一般需要将输入的字符进行隐藏,这就需要使用到putchar()函数。
一般的实现方法是:输入一个字符后,用putchar('*')代替输入的字符进行显示,但保存输入的字符,直到用户输入回车键为止。代码如下:
#include <stdio.h>
#include <conio.h> // 控制台输入输出头文件
#define PASSWORD_LENGTH 10 // 定义密码的最大长度为10
int main()
{
char password[PASSWORD_LENGTH + 1]; // password用于保存输入的密码
int i = 0;
char ch;
printf("请输入密码:"); // 提示用户输入密码
while((ch = getch()) != '\r') // 如果没有输入回车就一直循环
{
if(ch == '\b' && i > 0) // 如果输入的是退格键,则删除上一个字符
{
putchar('\b'); // 光标前移一格
putchar(' '); // 输出一个空格覆盖原字符
putchar('\b'); // 光标退回到原来的位置
i--; // password长度减1
continue;
}
if(i == PASSWORD_LENGTH) // 如果密码长度已经达到最大值,就终止输入
{
continue;
}
password[i] = ch; // 将输入的字符存入password数组中
putchar('*'); // 输出一个星号
i++; // password长度加1
}
password[i] = '\0'; // 给password字符串最后加上'\0'结束标志
printf("\n您输入的密码是:%s\n", password); // 显示密码
return 0;
}
运行结果如下图所示:
3.2 编写控制台动画
putchar()函数还可以用于在控制台输出动画。例如下面的代码实现了一个简单的控制台动画,通过putchar()函数输出一些字符,从而实现字符在控制台上的移动:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
int main()
{
int i, j, k;
srand((unsigned int)time(NULL)); // 设置随机数种子
for(i = 1; i <= 100; i++) // 循环100次
{
for(j = 0; j < i; j++) // 输出 i 个空格
{
putchar(' ');
}
if(i % 2 == 0)
{
for(k = 1; k <= i; k++) // 输出 i 个*号
{
putchar('*');
}
}
else
{
for(k = 1; k <= i; k++) // 输出 i 个#号
{
putchar('#');
}
}
usleep(10000); // 休眠10毫秒
system("cls"); // 清屏
}
return 0;
}
运行结果效果如下:
4. 小结
putchar()函数是一种常用的输出函数,可以输出单个字符,也可以与文件输出流搭配使用,将字符输出到文件中。在实际应用中,putchar()函数可以用于控制台输入密码的隐藏输入,也可以用于编写控制台动画等。