1. 程式人生 > >c語言輸入函式getchar&fgets&scanf&scanf_s

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;
}