C 語言版本的 string replace 函數

來源:互聯網
上載者:User

ANSI C 中並沒有提供 string replace 的函數,網上有一些自己實現的,不過大多有一個問題:不是全部替換。

 

例如,This is a test to test string replacing.

如果要替換 test 成 example,全部替換的結果應該是:This is a example to example string replacing.

網上很多的實現都是只要找到一個結果就返回了。

 

這裡我寫了一個全部替換的函數:

 

char * strrepl(const char * src, char * dst, size_t dst_size, const char * search, const char * replace_with) {<br /> char * replace_buf = (char *)malloc(dst_size);<br /> if (replace_buf) {<br /> replace_buf[0] = 0;<br /> char * p = (char *)src;<br /> char * pos = NULL;<br /> while ( (pos = strstr(p, search)) != NULL ) {<br /> size_t n = (size_t)(pos-p);<br /> strncat(replace_buf, p, n > dst_size ? dst_size : n);<br /> strncat(replace_buf, replace_with, dst_size-strlen(replace_buf)-1);<br /> p = pos + strlen(search);<br /> }<br /> snprintf(dst, dst_size, "%s%s", replace_buf, p);<br /> free(replace_buf);<br /> }<br /> return dst;<br />}<br />

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.