C 中的Peek函式在C語言中實現

2021-08-27 07:49:40 字數 925 閱讀 2099

我朋友總是跟我說,c++是c的閹割版,我不反對,也不贊同。

最近專案中,遇到乙個問題,就是如何在主程式執行的同時檢測串列埠的輸入,比如輸入"q",退出函式。

同事推薦用c++的peek函式,可是我從進入工作以來,在linux專案中全部使用的是c,唯一知道去的輸入的就是getchar()了.

該呼叫形式為cin.peek() 其返回值是乙個char型的字元,其返回值是指標指向的當前字元,但它只是觀測,指標仍停留在當前位置,並不後移。如果要訪問的字元是檔案結束符,則函式值是eof(-1)。

其功能是從輸入流中讀取乙個字元 但該字元並未從輸入流中刪除  若把輸入流比作乙個 棧類 那麼這裡的peek函式就相當於棧的成員函式front 而如果cin.get()則相當於棧的成員函式pop。

下面這段**能幫助您更清晰地理解peek函式

/* istream peek */

#include using namespace std;

int main ()

else

return 0;

}

char peek_char;

static char peek()

static void * __peek_loop_func(void *pinputarg)

}} usleep(1000*10); }}

// 下面的**放在主程式中,用來建立檢測輸入的執行緒.

pthread_t tpeekthreadhandle;

pthread_create(&tpeekthreadhandle, null, &__peek_loop_func, null);

原理就是建立乙個新執行緒,來接收串列埠的輸入,如果輸入的第一字元為『q』 則退出程式,其實在退出的時候,我們也可以再捕獲一下。

C語言中結構體在函式中的應用

2012 05 09 16 39 47 前 天在編寫一段 時突然對結構體在函式中的用法有些模糊了,經過複習,基本弄清了這些知識,特總結如下 一 結構體與函式引數 結構体作函式引數可分為傳值與傳指標。1 傳值時結構體引數會被拷貝乙份,在函式體內修改結構體引數成員的值實際上是修改呼叫引數的乙個臨時拷貝的...

在C語言中以及在C 中static的作用

在c語言中static的作用如下 第一 在修飾變數的時候,static修飾的靜態區域性變數只執行一次,而且延長了區域性變數的生命週期,直到程式執行結束以後才釋放。第二 static修飾全域性變數的時候,這個全域性變數只能在本檔案中訪問,不能在其它檔案中訪問,即便是extern外部宣告也不可以。第三 ...

C語言中的函式

在對c語言有過一定的了解之後,我們都會涉及到乙個概念 函式。那麼,什麼是函式呢?首先,我們來看一段 includeint max int x,int y int main 在上面的程式中,我們將引數a,b傳入到函式max之中,最後求出結果並返回,那麼,這樣寫的好處是什麼呢?我們為什麼要使用函式來實現...