简单的输入输出函数
1、putchar函数
读取键盘输入字符并输出到终端(屏幕)上;
putchar: put a character 输出一个字符
函数格式:putchar(x); 等价于 printf(“%c”,x);
测试putchar函数与printf函数的等价关系:
#define _CRT_SECURE_NO_WANINGS
#include<stdio.h>
#include<stdlib.h>
int main() {
char m = 'a';
printf("您的姓名姓的首字母是:%c\n",m);
printf("您的姓名姓的首字母是:");
putchar(m);
return 0;
}
2、puts函数
puts函数用来向标准输出终端(屏幕)输出一个字符串并换行
puts :put a string 输出一个字符串
测试puts函数和printf函数的输出效果
#define _CRT_SECURE_NO_WANINGS
#include<stdio.h>
#include<stdlib.h>
int main() {
char my_name[120] = "小柯南";
printf("您的姓名:");
puts(my_name);
printf("您的姓名:%s",my_name);
return 0;
}
3、getchar 函数
从标准输入流里读取下一个字符
函数格式:int getchar();
/*
x=getchar() 等价于 scanf_s(“%c”,&x)
*/
测试getchar函数和scanf_s函数
#define _CRT_SECURE_NO_WANINGS
#include<stdio.h>
#include<stdlib.h>
int main() {
char my_name = 'a';
printf("请输入您的姓名:");
scanf_s("%c", &my_name, sizeof(my_name));
printf("您的姓名:%c\n", my_name);
printf("您的姓名:");
int c=getchar();
putchar(my_name);
return 0;
}
getchar函数的返回值是int类型,返回的是一个字符对应的ASCII码数值。
当程序首次调用getchar时,或者说当标准输入流(stdin)内为空时,程序阻塞在那就等着用户按键。
直到用户按回车为止,包括回车所有的输入的字符都被存入了标准输入流中。
之后每次调用getchar函数时,总是从流中读入一个字符。直到回车符’\n’被读出之后,标准输入流就空了。
那么就有疑问了?可不可以利用getchar函数实现与scanf(“%s”,x)等价的功能呢?答案当然是可以的。
#define _CRT_SECURE_NO_WANINGS
#include <stdio.h>
int main() {
int i = -1;
char s[120] = "";
printf("请输入您的姓名:");
do{
s[++i] = getchar();
putchar(s[i]);
} while (s[i] != '\n');
s[i] = '\0'; //设置结尾符号
return 0;
}
4、gets函数
gets函数是从标准输入流中读出一行文字,读出回车符’\n’之后结束读取。
写程序时,申请的缓冲区数组的空间应该足够大,以便在执行读操作时不发生溢出。
函数格式:char *gets( char *buffer );
gets(x)函数与scanf("%s",x)相似,但不完全相同。使用scanf("%s",s) 读取的一行文字中不包含回车符,而gets函数读取的一行文字是包含回车符的,但是在字符串初始化时应该加上结束符号”\0”。
#define _CRT_SECURE_NO_WANINGS
#include <stdio.h>
int main(){
char s[66]="\0";
printf("请输入您的名字:");
gets_s(s); //代替scanf("%s",s);
puts("您输入的名字是:");
puts(s); //将整个字符串输出
return 0;
}