程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 詳解C說話中scanf函數應用的一些留意點

詳解C說話中scanf函數應用的一些留意點

編輯:關於C++

詳解C說話中scanf函數應用的一些留意點。本站提示廣大學習愛好者:(詳解C說話中scanf函數應用的一些留意點)文章只能為提供參考,不一定能成為您想要的結果。以下是詳解C說話中scanf函數應用的一些留意點正文


 (一)根本引見

Scanf是體系自帶的函數,聲明包括在stdio.h文件中,是以如果有該函數,必需加載#include<stdio.h>頭文件。當履行到scanf函數時,法式就暫停期待用戶輸出,該函數只接收變量的地址,格局為&變量名。是一個壅塞式的函數,2用戶輸出終了後,則將值賦值給變量,至此函數挪用終了。敲回車鍵告訴盤算機鍵入終了。

(二)應用留意

①. 應用scanf函數輸出一個字符變量。Char a; scanf(“%c”,&a);

②. 同時輸出多個值。Scanf(“%d,%d”,&num1,num2);

③. Scanf(“%d\n”,&a);//在外部不克不及應用\n本義字符,不然沒完沒了。

 

留意:在這裡兩個占位符之間是,離隔,則請求在輸出時也應用逗號離隔如輸出1,2。此時為num1=1,num2=2。若外部為“%d#%d”則輸出1#2。若外部為“%dy%d”,則輸出1y2。假如中央的字符是空格,則在輸出時可以用空格離隔,也能夠敲tab鍵或許是回車鍵作為分隔符離隔,後二者可以看作是由空格構成的。

(三)一次踩坑的碎碎念...

#include<stdio.h>

int main()
{
 char ch;
 printf("選擇A或許B(按回車鍵確認):");
 scanf("%c",&ch);
 while(1)
 {
 if(ch == 'B' || ch == 'b')
 {
  printf("對不起,您輸出的謎底毛病,請從新輸出!\n選擇A或許B(按回車鍵確認):");
  //getchar();
  scanf("%c",&ch);
  printf("ch=%c",ch);
 }
 else
 {
  printf("\n准確\n");
  break;
 }
 }
 return 0;
}

下面代碼的獲得的成果是:

貌似跟我料想的紛歧樣,我本想假如輸出的是'B'或許'b'就持續輪回輸出,然則成果確切直接做了一次輪回就停滯了。為何呢?

本來在輪回外的誰人scanf做完後按下的回車鍵進入了緩存,而進入輪回履行scanf後(此次輸出的也是'b'),緩存的內容應當是buffer[] ={'b','\n'};而履行printf("ch=%c",ch);時取的值就是'\n',所以看上去似乎沒有履行scanf語句,其他履行了,只是此次打印的字符不是方才輸出的'b',而是它前一個字符'\n',所以要到達我原來的後果,則須要先將'\n'從緩存中消除失落,挪用一次getchar();便可,如上代碼也只需將正文的那一句代碼解正文便可。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved