2013-04-03 85 views
0

如何在C編程中從動態輸出控制檯中讀取和比較字符串?C編程中的字符串比較

考慮一下,你會得到一個輸出。您需要將程序的輸出視爲其他程序功能的輸入。方案1,如下所示的輸出例如,

A123#345H5KGH3 *** ***狀態*** GETRUNOMMUNICATION5619連*** *** HIEDSAKNFH OK ***

enter image description here

我需要獲取語句STATE:CONNECTEDOK如果此語句出現在輸出控制檯中,則下一個程序(函數)將啓動。

注:

  1. 我得到一個輸出同時

  2. 考慮的第一輸出爲「一個」下一個會是「A1」和下面的輸出如「A12」

  3. 我以爲使用數組來存儲值,但輸出範圍(無限制)使得它非常冗長,並且很難在手動配置之前進行配置,因爲數組長度未知。

  4. 如果指定的語句出現在輸出控制檯中,那麼它應該會提示一些消息。

  5. 兩個連續輸出之間沒有空格。

我想用字符串,所以我的問題有:

  1. 如何閱讀從控制檯輸出字符串,當字符串的長度是未知的?

  2. 我需要使用什麼函數來執行比較(我已經知道語句「STATE:CONNECTEDOK」),其輸出長度未知?

  3. 如何在範圍或長度未知時存儲輸出數據?

謝謝。

+0

執行第一個程序,在第二個上下文中使用類似'execl()'的方式生成'STATE:CONNECTEDOK'消息。然後像從用戶那裏獲取輸入一樣捕獲輸出。 – Mike

回答

1

假設你不是說你要識別數據圖形與實際的控制檯窗口,而是你能管的數據,你的計劃,我認爲最好的辦法是使用一個state machine, namely an "acceptor"

您只需一次讀取一個字符,並將其送入狀態機。

+0

感謝您的回答,這是預期的答案。 – rathishDBA