1.控制台读入读出
1.1.单个字符
(1)相关函数:
读入函数 | getchar(), getch(), scanf() |
读出函数 | putchar(), printf() |
getchar():int getchar(void)
- 返回值为单个字符的ASCII码值。
- 输入字符会回显在控制台。
- 非即读模式,待输入<Enter>('\n')键后从缓冲区中读入字符,再执行之后的语句。
- 例子如下:
#include <stdio.h>
int main()
{
int i = 0;
char tmp[11];
for(i = 0; i < 10; i++)
{
tmp[i] = getchar();
putchar('*');
if(tmp[i] == '\n')
{
tmp[i] = '\0';
break;
}
}
tmp[i] = '\0';
printf("\npasswd: %s\n", tmp);
return 0;
}
运行结果截图:
注:输入的字符会回显在控制台,且会读入到缓冲区直到输入<Enter>键,每次循环从缓冲区中读取一个字符,若不足,继续等待输入。
getch():int getch(void)
- 返回值为单个字符的ASCII码值。
- 输入字符不会回显在控制台。
- 即读模式,输入一个读入一个,紧接着执行之后的语句;读入的<Enter>键码值为13。
- 例子如下:
#include <stdio.h>
int main()
{
int i = 0;
char tmp[11];
for(i = 0; i < 10; i++)
{
tmp[i] = getch();
putchar('*');
if(tmp[i] == '\r')
{
tmp[i] = '\0';
break;
}
}
tmp[i] = '\0';
printf("\npasswd: %s\n", tmp);
return 0;
}
运行结果截图:
注:每次输入,getch()都会读入,而后执行之后的语句,如此循环。
scanf():int scanf(const char *format, .....)
- 返回值为本次成功读入的数据项数。
- 输入字符会回显在控制台。
- 非即读模式,等同于getchar()。
- 例子如下:
#include <stdio.h>
int main()
{
int i = 0;
char tmp[11];
for(i = 0; i < 10; i++)
{
scanf("%c", &tmp[i]);
putchar('*');
if(tmp[i] == '\n')
{
tmp[i] = '\0';
break;
}
}
tmp[i] = '\0';
printf("\npasswd: %s\n", tmp);
return 0;
}
运行结果截图:
注:效果等同于getchar()。
putchar():int putchar(int c)
- 返回值:正确时为输出字符的unsigned int值,错误时返回EOF文件结束符。
- 即刻输出单个字符。
- 例子如下:
#include <stdio.h>
int main()
{
int i = 38;
char ch = '#';
putchar(i);
putchar(',');
putchar(ch);
return 0;
}
执行结果截图:
printf():int printf(const char *format, ...)
- 返回值:实际输出的字符个数。
- 非即刻输出字符(详见第二节)。
- 例子如下:
#include <stdio.h>
int main()
{
int i = 38;
char ch = '#';
printf("%c", i);
printf("%c", ',');
printf("%c", ch);
return 0;
}
执行结果截图: