欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決C語言中使用scanf連續(xù)輸入兩個字符類型的問題

 更新時間:2020年12月10日 09:59:21   作者:0點(diǎn)51 勝  
這篇文章主要介紹了解決C語言中使用scanf連續(xù)輸入兩個字符類型的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

昨天用C編程,遇到一個關(guān)于scanf的細(xì)節(jié)問題,假如運(yùn)行如下程序:

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

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

為什么?當(dāng)時百思不得其解。。。

今天上網(wǎng)查了下才知道,原來scanf是從標(biāo)準(zhǔn)輸入緩沖區(qū)中讀取輸入的數(shù)據(jù),而%c的字符輸入格式會接收回車字符,在輸入第一個scanf時輸入字符后按 回車結(jié)束,輸入緩沖中保存了這個回車符,遇到第二個scanf時,它自動把這個回車符賦給了ch2。

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

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

1。清空輸入緩沖區(qū)

第一個scanf后加入語句:

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

2。格式控制中加入空格

將第二個scanf改為:

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

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

補(bǔ)充知識:利用C語言實現(xiàn):輸入兩個字符串,統(tǒng)計一個字符串在另一個字符串中出現(xiàn)的次數(shù)。

輸入兩個字符串,統(tǒng)計一個字符串在另一個字符串中出現(xiàn)的次數(shù)

例如,asdfgasfgasf,as,則輸出3

編程環(huán)境為codeblocks,編譯器是GUN-GCC,操作系統(tǒng)是win7-64位

分析:此代碼主要運(yùn)用了一個算法,是字符串匹配的樸素模式匹配算法??炊惴ㄖ笤賮碜x代碼就沒有什么壓力了。

代碼如下:

#include <stdio.h>
#include <stdlib.h>
int main()
{
 char S[100],T[20];
 char ch1,ch2;
 printf("請輸入主字符串:\n");
 ch1=getchar();
 int i=0;
 while(ch1!='\n')
 {
  S[i]=ch1;
  i++;
  ch1=getchar();
 }
 
 printf("請輸入要篩選的字符串:\n");
 ch2=getchar();
 int j=0;
 while(ch2!='\n')
 {
  T[j]=ch2;
  j++;
  ch2=getchar();
 }
 
 int m,n;//m為S的下標(biāo),n為T的下標(biāo)
 m=0;
 n=0;
 int num=0;//num用于記錄選定單詞出現(xiàn)的次數(shù)
 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("出現(xiàn)的次數(shù)是%d",num);
  }
}

以上這篇解決C語言中使用scanf連續(xù)輸入兩個字符類型的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • C/C++位段超詳細(xì)整理大全

    C/C++位段超詳細(xì)整理大全

    以位為單位來定義結(jié)構(gòu)體中的成員變量所占的空間內(nèi)存,含有位段的結(jié)構(gòu)體稱為位段結(jié)構(gòu),這篇文章主要給大家介紹了關(guān)于C/C++位段的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • C程序讀取鍵盤碼的方法

    C程序讀取鍵盤碼的方法

    這篇文章主要介紹了C程序讀取鍵盤碼的方法,運(yùn)行時可通過鍵盤按鍵獲取其對應(yīng)的鍵盤碼,文章最后附帶了鍵盤碼與按鍵的對照表,需要的朋友可以參考下
    2014-09-09
  • C語言示例代碼講解棧與隊列

    C語言示例代碼講解棧與隊列

    棧和隊列,嚴(yán)格意義上來說,也屬于線性表,因為它們也都用于存儲邏輯關(guān)系為?"一對一"?的數(shù)據(jù),但由于它們比較特殊,本章講解分別用隊列實現(xiàn)棧與用棧實現(xiàn)隊列
    2022-05-05
  • C語言打印正方形實例代碼

    C語言打印正方形實例代碼

    大家好,本篇文章主要講的是C語言打印正方形實例代碼,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • C++中引用的使用總結(jié)

    C++中引用的使用總結(jié)

    以下是對C++中引用的使用進(jìn)行了詳細(xì)的總結(jié)介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2013-10-10
  • 舉例理解C語言二維數(shù)組的指針指向問題

    舉例理解C語言二維數(shù)組的指針指向問題

    這篇文章主要介紹了C語言二維數(shù)組的指針指向問題,文中不建議用二級指針來訪問二維數(shù)組,需要的朋友可以參考下
    2015-12-12
  • 關(guān)于C++中菱形繼承和虛繼承的問題總結(jié)

    關(guān)于C++中菱形繼承和虛繼承的問題總結(jié)

    C++的三大特性為:封裝,繼承,多態(tài)。但是在繼承中,存在一些使用方面的問題需要注意,下面這篇文章主要給大家總結(jié)介紹了關(guān)于C++中菱形繼承和虛繼承的問題,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-08-08
  • C++中如何將operator==定義為類的成員函數(shù)

    C++中如何將operator==定義為類的成員函數(shù)

    這篇文章主要介紹了C++中如何將operator==定義為類的成員函數(shù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • C語言實現(xiàn)字符串操作函數(shù)的實例

    C語言實現(xiàn)字符串操作函數(shù)的實例

    這篇文章主要介紹了C語言實現(xiàn)字符串操作函數(shù)的實例的相關(guān)資料,開發(fā)程序的時候經(jīng)常使用到一些字符串函數(shù),例如求字符串長度,拷貝字符串……,需要的朋友可以參考下
    2017-08-08
  • c語言小游戲程序之彈跳小球的實現(xiàn)代碼

    c語言小游戲程序之彈跳小球的實現(xiàn)代碼

    這篇文章主要介紹了c語言小游戲程序之彈跳小球的實現(xiàn)代碼,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12

最新評論