阅读:2420回复:26
能怎么办呢?
我真的是在是搞不定下面这个字符替换函数,哪位帮忙改一下,给分!
#define BUFSIZE 1024 //Stringlist 原字符串; //Replacechar 替换字符串; //Mchar 被替换的字符串; LPTSTR Replacestr(LPTSTR &Stringlist,LPTSTR Replacechar,char Mchar) { TCHAR newBuffer[BUFSIZE]; // buffer for string int i = 0; for( i=0;i<=BUFSIZE&&Stringlist!=0;i++ ) { if(Stringlist == Mchar) strcat(newBuffer,Replacechar); else newBuffer = Stringlist; } return(Stringlist); MessageBox(NULL,Stringlist,\"gotit\",MB_OK); } |
|
|
沙发#
发布于:2002-08-15 15:41
多谢了,无论如何我以后不问这种问题了。 问问题是一个很重要的获取知识的手段,不过要系统的提高自己,还是要看书的,还要多练练,我没别的意思。而且建议多读读别人的代码有好处的 :D :D |
|
|
板凳#
发布于:2002-08-15 15:30
问问周围的人就可以解决的。 ;)
|
|
地板#
发布于:2002-08-15 15:26
多谢了,无论如何我以后不问这种问题了。
|
|
|
地下室#
发布于:2002-08-15 15:08
这是我在C下改的,运行通过,你对照着把char等类型换成TCHAR吧
#define BUFSIZE 256 #include\"windows.h\" #include\"stdio.h\" void Replacestr(char * Stringlist,char * Replacechar,char * Mchar,char * replaced) { //replaced为替换以后的字符串 char newBuffer[BUFSIZE+1]; // buffer for string int i=0; int j=0; char temp[100]; memset(temp,0,sizeof(temp)); memset(newBuffer,0,BUFSIZE+1); for( i=0;j<BUFSIZE&&Stringlist!=0;i++ )//注意是<而不是<= { strncpy(temp,&Stringlist,strlen(Mchar));//注意这里有i, //Stringlist(i),我的怎么又显示不出来了 if(strcmp(temp,Mchar)==0)//匹配成功 { strcat(newBuffer,Replacechar); j+=strlen(Replacechar); i+=strlen(Mchar); } else { newBuffer[j++] = Stringlist; } } //return newBuffer; strcpy(replaced,newBuffer); ///MessageBox(NULL,Stringlist,\"gotit\",MB_OK); } void main() { char sourcechar[200]; char replaced[BUFSIZE+1]; memset(replaced,0,sizeof(replaced)); memset(sourcechar,0,sizeof(sourcechar)); strcpy(sourcechar,\"this a dog\"); Replacestr(sourcechar,\"this is \" ,\"this\",replaced); printf(\"%s\",replaced); } 运行输出结果是 this is a dog 你可以用其他的验证一下,好像没什么问题,不过一定注意缓冲区长度,避免溢出 你要多看看C,多练练手,这些都很基本 :D [编辑 - 8/15/02 by trent] [编辑 - 8/15/02 by trent] |
|
|
5楼#
发布于:2002-08-15 14:44
faint,我晕了。。。。这。。这。。这。。
看c语言的书,一定会对你有很大的帮助的。 分清楚char和char string |
|
6楼#
发布于:2002-08-15 14:35
这一条判断语句是无效的
if (*SrcString == *pp) |
|
|
7楼#
发布于:2002-08-15 14:31
LPTSTR Replacestr(LPTSTR Stringlist,LPTSTR Matchstring,LPTSTR Replacestring)
{ //TCHAR szBuffer[BUFSIZE]; // 假定已经赋值了 LPTSTR SrcString = Stringlist; LPCTSTR pp = Matchstring;// 要替换的 LPCTSTR ll = Replacestring;// 替换成nchar while (*SrcString != \'\\0\') //没有到末尾 { if (*SrcString == *pp) { *SrcString = *ll; break; } SrcString++; // 指向下个字符 } MessageBox(NULL,Stringlist,\"gotit\",MB_OK); return Stringlist; } 我稍微修改了一下你的程序,却发现它什么都没有做:( |
|
|
8楼#
发布于:2002-08-15 13:56
我换了TCHAR,还是出现运行出错,编译与链接都通过了,执行就爆出非法内存操作:(
|
|
|
9楼#
发布于:2002-08-15 13:47
tchar.h
你可以用tchar,没有包含他吗? |
|
10楼#
发布于:2002-08-15 13:01
_T(\"\")
这个声明需要什么头文件? 出错了... |
|
|
11楼#
发布于:2002-08-15 12:31
举个例子
一、替换字符串: LPTSTR s1,s2,s3; s1= \"I love you,But I love Betty more!\"; s2= \"Betty\"; s3 = \"Hellen\"; MessageBox(Replacestr(s1,s2,s3)); 结果:\"I love you,But I love Hellen more!\" 二、替换单个字符: LPTSTR s1= \"I love you,But I love Betty more!\"; LPTSTR s2= \"I\"; LPTSTR s3 = \"Jack\"; MessageBox(Replacestr(s1,s2,s3)); 结果:\"Jack love you,But Jack love Betty more!\" |
|
12楼#
发布于:2002-08-15 12:22
用我的吧!运行没问题,如果替换单个字符,就把它写成strlen=1的字符串。祝你顺利!
LPTSTR Replacestr(LPTSTR Stringlist,LPTSTR Matchstring,LPTSTR Replacestring) { LPTSTR newBuffer=_T(\"\"); char*p1,*p2; p1 = Stringlist; p2 = strstr(Stringlist,Matchstring); while (p2 != NULL) { strncat(newBuffer,p1,(p2-p1)); strcat(newBuffer,Replacestring); p1 = p2 + strlen(Matchstring); p2 = strstr(p1,Matchstring); } strcat(newBuffer,p1); return newBuffer; } |
|
13楼#
发布于:2002-08-15 12:18
TCHAR szBuffer[BUFFER_SIZE]; // 假定已经赋值了
TCHAR* SrcString = szBuffer[0]; TCHAR mchar; // 要替换的 THCAR nchar; // 替换成nchar mchar=_T(\'a\'); nchar _T(\'b\'); while (*SrcString != _T(\\0\')) //没有到末尾 { if (*SrcString == mchar) { *SrcString=nchar; break; } SrcString++; // 指向下个字符 } 方法很多。 |
|
14楼#
发布于:2002-08-15 12:04
只是替换字符串,真的有那么难吗?
|
|
|
15楼#
发布于:2002-08-15 12:02
。。。。你到底要干什么?我昏了。 我只是想把 Mchar 代表的字符替换掉啊,难道我说话真的很糊涂吗? |
|
|
16楼#
发布于:2002-08-15 12:00
。。。。你到底要干什么?我昏了。
|
|
17楼#
发布于:2002-08-15 11:54
我就是觉得有一点不对劲,那把Mchar换成字符串的形式吗?
|
|
|
18楼#
发布于:2002-08-15 11:51
Replacechar是个字符串,Mchar是字符啊。
用字符串替换字符? |
|
19楼#
发布于:2002-08-15 11:42
好吧,我就清楚一点说,我想写一个字符替换函数
#define BUFSIZE 1024 //这一句指定缓冲区空间大小 现在有一个字符串,Stringlist是它的指针,我用 Replacechar指向的字符串替换Mchar |
|
|
上一页
下一页