c语言输入函数getchar&fgets&scanf&scanf_s

//a)getchar:在键盘上输入一个ASCII码的文本,返回值得到的是一个数值,
//c=getchar等价于scanf("%c",&c);在第一次执行时时阻塞,并等待输入。
//如果下一次输入缓冲中有剩余还未提取的输入数据,将不阻塞直接提取那些剩余的数据;
//b)fflush(stdin)可以清除掉前面输入缓冲中剩余的数据,因此经常在getchar函数之前使用这个函数;
//fflush(stdin)对vs2013以前的版本管用,对vs2015不起作用,替代的方法是while ((n1 = getchar()) != '\n' && n1!= EOF);。
//c)gets;gets(s)等价于scanf("%s",&s);gets在vs2015中没有这个函数。
//fgets的参数是 变量,变量的大小+1,文件流 stdin是表示从屏幕输入。
//d)scanf是一个综合性格式化输入的函数,可以通过控制字符串同时输入多个不同类型的变量或常量的数值。
//e)scanf_s是避免输入字符串或字符越界的安全版本的输入函数,主要在%s和%c的控制符上要对缓冲区的大小代入。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//#include <string.h>
//#include <stdlib.h>

int main(int argc, char** argv)
{
 char s1[5];
 //wchar_t wc, ws[5];
 scanf_s("%s", s1, 6);//这里的6也不能控制输入多于5的字符输入,多于5个输入得到的结果是空。
 printf("%s",s1);
 char c1[5];
 fgets(c1, 6,stdin);
 printf("%s",c1);
 //int n = getchar();//输入a得到的是97
 char n1;
 scanf("%c", &n1);
 printf("%d\n",n1);//97
 printf("%c\n", n1);//a
 //fflush(stdin);
 //scanf("%*[^\n]");
 while ((n1 = getchar()) != '\n' && n1!= EOF);//可以清除缓冲区中的数据\n
 //char n1;
 scanf("%c", &n1);//输入a得到的是
 printf("%d\n", n1);//97
 printf("%c\n", n1);//a
 return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_43769045/article/details/84499567