2017-10-18 53 views
-4

如果我有類似的東西!23我怎樣才能解析它以得到數字部分?解析c中的char字符串,得到感嘆號後面的數字

輸入:23 輸出:23

輸入:! 輸出:錯誤

輸入:23eds3 輸出:錯誤

這是我得到的數字位的方法。但由於某種原因,strcpy正在搞亂我的數組,我在其中存儲了一些數據,它刪除了數組中的第一個元素。

if (args[0][0] == '!'){ 
    char str_index[1]; 
    strcpy(str_index, &args[0][1]); 
    int index = atoi(str_index); 
} 

而且我沒有用C編程的很多,這只是我的第二個方案C.

+2

你到目前爲止嘗試過什麼?你對c字符串解析有什麼瞭解可能是相關的?有很多方法可以解決您的問題,但我們希望能夠幫助您瞭解解決方案,而不僅僅是爲您提供代碼。 –

+2

請花一些時間閱讀[幫助頁面](http://stackoverflow.com/help),特別是名爲[「我可以詢問什麼主題?」](http://stackoverflow.com/help /主題)和[「我應該避免問什麼類型的問題?」](http://stackoverflow.com/help/dont-ask)。還請[參觀](http://stackoverflow.com/tour)和[閱讀如何提出好問題](http://stackoverflow.com/help/how-to-ask)。最後,請學習如何創建[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。 –

+0

我還建議您閱讀[一本好的初學者手冊或兩本書](http://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list)。如果您已經瞭解基礎知識,那麼請專注於有關輸入和輸出以及指針和數組的章節。除此之外,請閱讀['strtol'](http://en.cppreference.com/w/c/string/byte/strtol)函數。書籍和['strtol'](http://en.cppreference.com/w/c/string/byte/strtol)函數的知識就是您完成此任務所需的全部知識。 –

回答

1

一些提示,但不打算寫的代碼爲您提供:

使用String庫函數,如strchr來查找'!'。然後使用strtod將字符串轉換爲數字。查看strtod的輸出以查看它是否有錯誤或者是否有字母。

或者你可能想用整數代替strtol