我有一個循環填充「char array_of_strings [100] [100];」 在某些時候,我希望能夠從目前添加的所有字符串中清除它,並從位置0開始添加。如何在C中清理/保留它?如何重置C語言中的字符串數組?
謝謝
我有一個循環填充「char array_of_strings [100] [100];」 在某些時候,我希望能夠從目前添加的所有字符串中清除它,並從位置0開始添加。如何在C中清理/保留它?如何重置C語言中的字符串數組?
謝謝
假設你實際上使用數組作爲字符串,那麼這樣的事情應該工作:
int i;
for (i=0; i<100; i++)
array_of_strings[i][0] = 0;
當然,你沒有好好對待自己的數據爲字符串,那麼你可能需要看看在memset之類的東西。
該數據結構真的沒有固有的結構。假設裏面沒有任何東西,你基本上重置了它。
你有一些計數器可以告訴你你填充了哪些字符串,對不對?將其設置爲零。完成。
你究竟用的意思 「假裝重置它有什麼也沒有。」 ?我明白了。 – goe 2009-10-03 19:21:57
你的'array_of_strings'不過是10000個連續的字節。其數據僅具有任何組織,因爲您的代碼理解其具有組織,例如,通過你有一個變量'strings_populated'或者其他的東西來告訴你你已經把字符串放在了N個潛在的位置。既然這就是它的結構,那麼可以通過擦除結構來消除結構。 – chaos 2009-10-03 19:24:43
好吧,如果我將strings_populated設置回0,那麼我將開始覆蓋數組中已有的內容,爲true。但是如果我不覆蓋所有以前添加的字符串,該怎麼辦?然後,我留下讓我們說10個新字符串和2箇舊循環。 – goe 2009-10-03 19:26:45
您可以使用memset function將所有字符都設回零。
P.S.使用二維數組對於處理字符串來說相當不合常規。嘗試轉向個別字符串的動態分配。
memset(array_of_strings, 0, sizeof(array_of_strings));
這是不是把一個幻數的大小有更清潔,而且不容易打破的道路時,有人更改您的字符串數組的大小。既然你知道在編譯時使用sizeof的數組的大小將工作。
您也可以使用bzero,它非常像memset,但僅用於調零。在一些平臺上,bzero可能比memset更快,但老實說,這兩個函數都很快,在這裏分割頭髮很愚蠢。
bzero(array_of_strings, sizeof(array_of_strings));
bzero需要你 的#include memset的需要 的#include
即使您*將*數據視爲字符串,memset似乎更優雅。 – 2009-10-03 19:42:47
我同意上面的@Nathan Fellman。當你將一個數組memset()置零時,你想要完成的事情就不那麼含糊不清了。 – 2009-10-03 20:06:12