dragonliu01
一般會員
發表:19 回覆:16 積分:7 註冊:2004-12-21
發送簡訊給我
|
題目是將happy_new_year中的new換成old,
我的想法是用for找出和old_str中一樣的字串,在用new_str中的字串取代,
不過似乎失敗了...寫法上有錯誤
拜託大大幫我看看並改正 ><
#include
#include
int substitute_string(char *,char *, char *); int main(void){
char *str="happy_new_year";
char *new_str="old";
char *old_str="new";
int i;
int substitute_string(char *str,char *old_str, char *new_str); system("pause");
return 0;
} int substitute_string(char *str,char *old_str, char *new_str){
int i,p;
for(i=0;*(str i)!='\0';str )
{
if(*(str i)==*(old_str))
{
for(p=0;p<100;p )
{
if(*(str i p 1)==*(new_str p))
{
*(str i p)=*(old_str p-1);
}
else
break;
}
}
else
break;
}
return 0;
} 發表人 - dragonliu01 於 2004/12/23 02:29:56 發表人 - dragonliu01 於 2004/12/23 02:37:04 發表人 - dragonliu01 於 2004/12/23 02:37:30
|
dragonliu01
一般會員
發表:19 回覆:16 積分:7 註冊:2004-12-21
發送簡訊給我
|
重新用別的方法寫了一遍,已經將old_str以new_str取代,但是要如何把old接到
happy_new_year中呢??
[code]
#include
#include
#include
int substitute_string(char *,char *, char *);
void check(char * ,char * , char *);
int main(void){
char *str="happy_new_year";
char *new_str="old";
char *old_str="new";
int substitute_string(char *str,char *old_str, char *new_str); system("pause");
return 0;
} int substitute_string(char *str,char *old_str, char *new_str){
void check(char *str,char *old_str, char *new_str);
return 0;
} void check(char *str,char *old_str, char *new_str){
if (*old_str=='\0')
{
*new_str=*old_str; //遞迴終點
}
else if(*old_str==*str)
{
check(str 1,old_str 1,str 1); //持續檢查是否相同
}
else
return ; //若沒檢查到和*old_str相同則跳出
} [\code]
|
blk5743
高階會員
發表:34 回覆:371 積分:236 註冊:2003-11-17
發送簡訊給我
|
試試這樣
//--------------------------------------------------------------------------- #pragma hdrstop //---------------------------------------------------------------------------
#include
#include
#include
#pragma argsused
//---------------------------------------------------------------------------
bool ReplaceStr(char *str,char *new_str,char *old_str)
{
unsigned char StrLen = strlen(str),RepLen = strlen(old_str);
for ( int i = 0; i < (StrLen-RepLen); i )
{
if ( *(str i) == *old_str )
if ( *(str i 1) == *(old_str 1) )
if ( *(str i 2) == *(old_str 2) )
{
*(str i) = *new_str;
*(str i 1) = *(new_str 1);
*(str i 2) = *(new_str 2);
printf("%s\r\n",str);
}
}
} int main(void){
char *str="happy_new_year";
char *new_str="old";
char *old_str="new";
ReplaceStr(str,new_str,old_str); system("pause");
return 0;
}
|
暗黑破壞神
版主
發表:9 回覆:2301 積分:1627 註冊:2004-10-04
發送簡訊給我
|
有現成的STRSTR函數為什麼不用呢?
先用STRSTR找到位置。再用MEMCPY就把舊的換成新的了啊。
當然。這是指要換的字串長度一樣的情況。
如果不一樣長。就要準備一個空的BUFFER來做COPY用囉。^_^
|
deity
尊榮會員
發表:90 回覆:876 積分:678 註冊:2003-05-09
發送簡訊給我
|
dragonliu01您好:
直接用StringReplace,试试:
AnsiString sz1="happy_new_year";
ShowMessage(sz1);
AnsiString sz2;
sz2=StringReplace(sz1, "new", "old", TReplaceFlags()<
将old替new,具体可查看站内“StringReplace”关键字 ~~~行径窄处,留一步与人行~~~
|
terencechiu
一般會員
發表:13 回覆:29 積分:8 註冊:2004-12-15
發送簡訊給我
|
大大您寫的我看不太懂。
可以給我sample code 嗎? 我有一個字串,想把其中的某些字取代。像是UltraEdit的replace一樣。
char ABC[128] = "08/30/05 11:26:30";
我想把"/"取代成"-",把" "取代成"-",把":"取代成"-"。
不知道有什麼函數,在VC 裡面可以用呢? Terence Chiu
------ Terence Chiu
|