亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言中的字符類型怎么利用scanf輸入

發布時間:2020-12-10 14:13:33 來源:億速云 閱讀:291 作者:Leah 欄目:開發技術

C語言中的字符類型怎么利用scanf輸入?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

昨天用C編程,遇到一個關于scanf的細節問題,假如運行如下程序:

#include<stdio.h>
int main()
{
 char ch2,ch3;
 printf("Input for ch2:/n");
 scanf("%c",&ch2);
 printf("ch2=%c/n",ch2);
 printf("Input for ch3:/n");
 scanf("%c",&ch3);
 printf("ch3=%c/n",ch3);
}

表面上看這段程序是沒有錯的,也可以運行,但運行過程中到第二個scanf輸入值給ch3時,程序不會停止,而是直接運行到最后一個printf !

為什么?當時百思不得其解。。。

今天上網查了下才知道,原來scanf是從標準輸入緩沖區中讀取輸入的數據,而%c的字符輸入格式會接收回車字符,在輸入第一個scanf時輸入字符后按 回車結束,輸入緩沖中保存了這個回車符,遇到第二個scanf時,它自動把這個回車符賦給了ch3。

而如果第二個scanf的輸入格式不是%c時,由于格 式不匹配,這個回車符會被自動忽略,所以只有在連續輸入兩個%c的格式時才會出現這樣的問題!

解決辦法:(二辦法任選其一)

1。清空輸入緩沖區

第一個scanf后加入語句:

fflush(stdin); //C語言清空輸入緩沖區函數

2。格式控制中加入空格

將第二個scanf改為:

scanf(" %c",&ch3);//在%號前面加一個空格

scanf格式輸入時要求輸入格式與格式控制符中的完全一樣(如:scanf("abcd%c",&ch);輸入時必須輸入abcde,ch得到的值為e)空格可以抵消前面輸入的回車符。

補充知識:利用C語言實現:輸入兩個字符串,統計一個字符串在另一個字符串中出現的次數。

輸入兩個字符串,統計一個字符串在另一個字符串中出現的次數

例如,asdfgasfgasf,as,則輸出3

編程環境為codeblocks,編譯器是GUN-GCC,操作系統是win7-64位

分析:此代碼主要運用了一個算法,是字符串匹配的樸素模式匹配算法。看懂算法之后再來讀代碼就沒有什么壓力了。

代碼如下:

#include <stdio.h>
#include <stdlib.h>
int main()
{
 char S[100],T[20];
 char ch2,ch3;
 printf("請輸入主字符串:\n");
 ch2=getchar();
 int i=0;
 while(ch2!='\n')
 {
  S[i]=ch2;
  i++;
  ch2=getchar();
 }
 
 printf("請輸入要篩選的字符串:\n");
 ch3=getchar();
 int j=0;
 while(ch3!='\n')
 {
  T[j]=ch3;
  j++;
  ch3=getchar();
 }
 
 int m,n;//m為S的下標,n為T的下標
 m=0;
 n=0;
 int num=0;//num用于記錄選定單詞出現的次數
 while(m<=i&&n<=j)
 {
  if(S[m]==T[n])
  {
   m++;
   n++;
  }
  else
  {
   m=m-n+1;
   n=0;
  }
  if(n==j)
  {
   num++;
  }
 }
 if(m==i+1)
  {
   printf("出現的次數是%d",num);
  }
}

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

渭南市| 丰原市| 怀安县| 电白县| 旬阳县| 乌兰察布市| 息烽县| 舟曲县| 长寿区| 文登市| 芒康县| 长葛市| 河东区| 鹤山市| 南宫市| 北流市| 治多县| 彭泽县| 南充市| 平罗县| 房产| 通辽市| 会昌县| 武城县| 菏泽市| 吴川市| 荥阳市| 石台县| 界首市| 涿州市| 沙田区| 陇川县| 宁明县| 汾阳市| 宜宾市| 嘉兴市| 台东市| 海口市| 深州市| 金沙县| 彭水|