我有一個很難理解我應該怎麼做到以下幾點:C:字符串和指針。改變字符串中的子串在一個特定的模式
我有一個像這樣定義的單詞列表:
typedef struct _StringNode {
char *str;
struct _StringNode* next;
} StringNode;
現在我需要編寫一個函數來接收一個字符串和兩個相同長度的單詞列表,並且我需要將字符串中第一個列表中的單詞的每一個外觀與第二個列表中的相應單詞替換掉。
例子:
text: "stack overflow siteoverflow oveflow stack"
patterns: [ "stack", "overflow", "site" ]
replacements: [ "Hello", "guys", "here" ]
result: "Hello guys hereguys guys Hello"
對於每個字:我試圖使用strstr()
所以我會獲得一個指向這個詞的出現在字符串的一個副本,然後再換個詞,並提升文本字符串副本的指針。
char* replace(const char *text,
const StringNode *patterns,
const StringNode *replacements);
每個節點都有一個字,這兩個列表包含相同數量的節點。我刪除了代碼,我感覺這是不正確的。 – Numerator 2012-07-20 08:36:54
請注意,不要使用以'_'開頭的名字,後跟大寫字母。它們是[保留](http://www.gnu.org/software/libc/manual/html_node/Reserved-Names.html)。在C中,你可以安全地寫'typedef struct StringNode {...} StringNode;' – Shahbaz 2012-07-20 09:07:44
我給列表添加了Python風格的語法,並引用了字符串,以使其更清晰。 – unwind 2012-07-20 09:11:27