C 讀取字元的迴圈應注意的要點

2021-10-06 12:27:55 字數 2914 閱讀 3584

當我們需要讀取乙個字元來判斷需要執行的操作時,使用者輸入的字元無效或輸入多個字元怎麼辦?

另外cin.get()讀取單個字元,在while判斷中,其後的字元』\n』依然會讀入進行判斷從而影響結果。後面需要跟乙個cin.get(),進行吸收。

例題:加入benevolent order of programmer後,在bop大會上,人們便可以通過加入者的真實姓名、頭銜或秘密bop姓名來了解他(她)。請編寫乙個程式,可以使用真實姓名、頭銜、秘密姓名或成員偏好來列出成員。編寫該程式時,請使用下面的結構:

// benevolent order of programmers name structure

struct bop

;

該程式建立乙個由上述結構組成的小型陣列,並將其初始化為適當的值。另外,該程式使用乙個迴圈,讓使用者在下面的選項中進行選擇:

a. display by name         b. display by title

c. display by bopname d. display by preference

q. quit

preference指的是:使用者更偏向於別人知道自己的名字。

應有以下的運**況:

a. display by name         b. display by title

c. display by bopname d. display by preference

q. quit

enter your choice: a

wimp macho

raki rhodes

celia laiter

hoppy hipman

pat hand

next choice: d

wimp macho

junior programmer

mips

analyst trainee

loopy

next choice: q

bye!

以下是**,新加入了輸入糾正機制:

#include

using

namespace std;

//宣告所用函式

void

showmenu()

;void

showfullname()

;void

showtitle()

;void

showbopname()

;void

showpreference()

;//構建結構體以及其型別變數member

const

int membernum =3;

const

int strsize =10;

struct bop

member[membernum]=,

,};int

main()

case

'b':

case

'c':

case

'd':

default

://糾錯機制

cout <<

"please check your input\n"

;break;}

} cout <<

"next decision: "

; cin.

get(decision)

; cin.

get();

} cout <<

"bye\n"

;system

("pause");

return0;

}void

showmenu()

void

showfullname()

}void

showtitle()

}void

showbopname()

}void

showpreference()

case1:

case2:}}}

執行結果:

需要學習的:

在cin.get(char) 後新增語句cin.get(), 吸收多餘的字元』\n』.

類似通過讀取字元來判斷執行任務的寫法格式(目前水平)。

while

(退出條件)

}}

輸入糾正機制.

面對行的輸入:

cin.getline(char*, size) 讀取換行符,但隨後替換乘』\0』

cin.get(char*, size)讀取size-1個字元,將』\n』放在輸入佇列裡,將第n個字元新增為』\0』

處理行輸入可能超過目標陣列的一種方法

#include

using

namespace std;

void

show

(char*,

int)

;int

main()

show

(arr,10)

; cin.

get(arr,10)

;}//當cin.get()讀取空行時cin為false

system

("pause");

return0;

}void

show

(char

*arr,

int n)

cout << endl;

}

買鞋時應注意的要點

1 合適的鞋子應該從購買的那一天起就合腳。不要妄想多穿兩天它就不磨腳了。在一次次痛苦的磨合過程中,你的腳會問題叢生,甚至會變得畸形難看,以至今後再也不能適應任何一雙好鞋。2 鞋跟與足底凹陷處的弧度必須合腳,踝骨與腳尖不應該碰觸到鞋子。前腳要有一定擺動的餘地 而後跟不能擺動。3 鞋的重量每增加1克,對...

C語言中的for迴圈應注意

for迴圈的初始化 調整 判斷都可以省略。但是for迴圈的判斷部分如果被省略也可能會出現一些問題。下面我舉乙個簡單的小例子來演示一下,希望大家在使用的時就可以避免這種問題。可以看到這次只列印了10個 syc 下面我簡要分析一下。第一次 進入for迴圈i 0,列印10個syc 第二次 進入for迴圈i...

C 讀取字串的位元組長度

在c 裡面我們可以通過字串的length屬性讀取字串的長度,但眾所周知,通過這個屬性讀出來的話不管中文還是英文或者數字,乙個字就是乙個長度,這並不是我們想要的結果。正確的方法應該是指定編碼格式,然後通過編碼的getbytes方法來讀取長度。於是寫了乙個控制台程式用於比較各種編碼讀取長度的不同,如下 ...