[英]Remove characters from a string in C
我只能訪問'C'並需要替換字符數組中的字符。 對於這個相對簡單的程序,我還沒有想出任何干凈的解決方案。
我傳遞了一個字符數組,例如:
char strBuffer[] = "/html/scorm12/course/course_index.jsp?user_id=100000232&course_id=100000879&course_prefix=ACQ&version=2&scorm_version=3&roster_id=100011365&course_name=Test%20Course%201.2&mode=browse&course_number=0000&mode_id=1";
我需要修改此緩沖區以替換所有&
與&
。 生成的緩沖區不必覆蓋strBuffer(可以創建新的緩沖區)。
有什么建議么?
編輯:
在過去,我已經在循環中完成了strstr函數,但是正在尋找一個更簡單的解決方案,也許是C等效於String.Replace方法。
編輯:
對於我的迫切需求,以下是我所需要的一切。
char strBuffer[] = "/html/scorm12/course/course_index.jsp?user_id=100000232&course_id=100000879&course_prefix=ACQ&version=2&scorm_version=3&roster_id=100011365&course_name=Test%20Course%201.2&mode=browse&course_number=0000&mode_id=1";
char strTemp[1024];
char *s = (char*)strBuffer;
int i=0;
while (*s)
{
strTemp[i++] = *s;
if (strncmp(s,"&",5) == 0)
{
s += 5;
}
else
s++;
}
strTemp[i] = 0;
未來的修改:
編輯:
我創建了一篇博文,詳細介紹了這些步驟並提供了更靈活的解決方案:
http://www.solutionmaniacs.com/blog/2012/11/25/c-removereplace-characters-in-a-string.html
基本上,你需要:
strstr()
函數查找“&” 在堆棧或堆上分配另一個緩沖區,然后一次將字符串復制到新的緩沖區1個字符中。 遇到&
字符時進行特殊處理。
char *s = (char*)strBuffer;
char sClean[strlen(strBuffer) + 1]; /* +1 for null-byte */
/* if above does not work in your compiler, use:
char *sClean = (char*)malloc(sizeof(strBuffer) + 1);
*/
int i=0;
while (*s)
{
sClean[i++]= *s;
if ((*s == '&') && (!strncmp(s, "&", 5)) s += 5;
else s++;
}
sClean[i] = 0;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.