簡體   English   中英

在不使用 C 中的任何庫的情況下從字符數組中刪除子字符串

[英]Removing a substring from a char array without using any libraries in C

我是一名計算機科學一年級的學生,我們的老師給了一個二進制模式搜索任務。 我們必須在不使用任何庫和內置函數(如(memmove 或 strstr))的情況下從字符串中刪除子字符串。 我們唯一的提示是它與'\\0'有關。 我不知道我們將如何實現這一點,因為我知道空字符只結束一個字符串而不是刪除它。 給定一個未知的輸入,它變得更難繞過。 我需要有關空字符使用的幫助。 編輯:哦,我們也不允許創建新數組。 EDIT2:如果您在這里尋求解決方案,則問題要復雜得多,請閱讀此線程下的評論以及標記的解決方案。

C 字符串是“空終止”,這意味着它們被認為在空值(在 C 中寫成'\\0' )出現的任何地方結束。

如果我從字符串 "Stack Overflow" 開始並用'\\0'覆蓋空格,我現在有字符串 "Stack"。 “溢出”的存儲仍然存在,但根據strlen()printf()等 C 函數,它不是字符串的一部分。事實上,如果我持有一個指向原始字符串的“O”部分的指針,就好像有兩個字符串:“Stack”和“Overflow”,您仍然可以同時使用它們。

就好像我來到你住的地方,在你家門前的馬路對面建了一堵巨大的牆。 這條路現在縮短了,我這邊的人不會知道你在那里。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM