2010-02-09 30 views
1

我如何可以採取一個字符串(在這種情況下,它會從一個文件中加載),然後刪除某些字符,並將其存儲在數組中。用C刪除某些字符,然後把剩下的陣列

例:

f.e.d.r.t.g.f

中刪除 「」獲得˚Fèd [R的Tg F IN數組,其中我可以操縱每個單獨

+8

您可以通過編寫一些代碼做到這一點 - 你嘗試過這麼遠嗎? – 2010-02-09 23:30:16

+0

你能更具體一點:你是否刪除了其他所有角色(比如說,因爲你正在從WCHAR轉換爲char),還是一個特殊角色,或者......? – 2010-02-09 23:31:20

+0

我只是刪除某個角色 – 2010-02-09 23:33:35

回答

2

的strtok()做到這一點很容易,如果

  1. 代碼是在單個線程
  2. 如果源字符串的過程中改變了你不介意使用。
+0

+1這可能是明顯的解決方案。另外,參考: http://www.gnu.org/s/libc/manual/html_node/Finding-Tokens-in-a-String.html – Skurmedel 2010-02-09 23:43:24

+0

您可以通過使用strtok_r()來解決第一個條件。 – 2010-02-09 23:52:32

+0

謝謝!這正是我所尋找的 – 2010-02-10 01:54:41

1

你也可以遍歷他們,如果字符被拒絕進入下一個字符(或如果沒有更多的chacters返回)。如果未被拒絕,則將其推入陣列。這將創建一個字符的副本,但除非你的字符串是巨大的,這不是一個問題。如果是,我的回答不會足夠了:)

另一個變化將是讀取字符串,直到遇到一個有效的字符,並返回它的功能。爲了讓下一個字符再次調用該函數。該函數需要維護傳遞給它的索引變量。如果到達字符串的末尾,您需要以某種方式指出它。

+1

如果您使用兩個指針,一個用於寫入位置,另一個用於讀取,則可以使用相同的想法。一定要在最後加上\ 0。 – Joel 2010-02-09 23:37:01

+0

@Joel:嗯是的,...好的建議。 – Skurmedel 2010-02-09 23:38:53

4

只需遍歷字符串,只複製感興趣的字符,維護新數組中當前位置的索引。