| 
					阅读:2511回复: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 10:21 
 | |
| 
 | 
| 板凳#发布于:2002-08-15 10:21 #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); i+=strlen(Replacechar);} else newBuffer = Stringlist; } return(newBuffer); MessageBox(NULL,Stringlist,\"gotit\",MB_OK); } | |
| 
 | 
| 地板#发布于:2002-08-15 10:30 
					上面那个字符定义有没有问题呢?char
 编译起来通不过 | |
| 
 | 
| 地下室#发布于:2002-08-15 10:34 
					LPTSTR Replacestr(LPTSTR &Stringlist,LPTSTR Replacechar,char Mchar)
 { TCHAR newBuffer[BUFSIZE+1]; // buffer for string int i=0; int j=0; memset(newBuffer,0,BUFSIZE+1); for( i=0;j<BUFSIZE&&Stringlist(i)!=0;i++ )//注意是<而不是<= { if(Stringlist(i) == Mchar) //中括号显示不出来,用()代 { strcat(newBuffer,Replacechar); j+=strlen(Replacechar); } else { newBuffer(j++) = Stringlist(i); } } return(newBuffer); MessageBox(NULL,Stringlist,\"gotit\",MB_OK); } 我没试行不行,你试试看 建议为newBuffer多申请一个字节空间值为0,避免缓冲区溢出啦 。而且你要确信替换后的字符串长度不会超过BUFSIZE:D [编辑 - 8/15/02 by trent] | |
| 
 | 
| 5楼#发布于:2002-08-15 11:01 
					效果没出来,不知道是怎么回事。没有提示,也没有结果输出,程序在使用这个函数的时候出错了...
 我现在怀疑自己根本不可能搞定它了 :( | |
| 
 | 
| 6楼#发布于:2002-08-15 11:17 
					调试到这个函数时报出一个unhandled exception
 后面信息是access violation | |
| 
 | 
| 7楼#发布于:2002-08-15 11:33 
					faint++,什么呀?
 你到底要实现什么样的功能?说清楚啊。 #define BUFSIZE 1024 //Stringlist 原字符串; //Replacechar 替换字符串; //Mchar 被替换的字符串; | |
| 8楼#发布于:2002-08-15 11:42 
					好吧,我就清楚一点说,我想写一个字符替换函数
 #define BUFSIZE 1024 //这一句指定缓冲区空间大小 现在有一个字符串,Stringlist是它的指针,我用 Replacechar指向的字符串替换Mchar | |
| 
 | 
| 9楼#发布于:2002-08-15 11:51 
					Replacechar是个字符串,Mchar是字符啊。
 用字符串替换字符? | |
| 10楼#发布于:2002-08-15 11:54 
					我就是觉得有一点不对劲,那把Mchar换成字符串的形式吗?				 | |
| 
 | 
| 11楼#发布于:2002-08-15 12:00 
					。。。。你到底要干什么?我昏了。				 | |
| 12楼#发布于:2002-08-15 12:02 。。。。你到底要干什么?我昏了。 我只是想把 Mchar 代表的字符替换掉啊,难道我说话真的很糊涂吗? | |
| 
 | 
| 13楼#发布于:2002-08-15 12:04 
					只是替换字符串,真的有那么难吗?				 | |
| 
 | 
| 14楼#发布于: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++; // 指向下个字符 } 方法很多。 | |
| 15楼#发布于: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; } | |
| 16楼#发布于: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!\" | |
| 17楼#发布于:2002-08-15 13:01 
					_T(\"\")
 这个声明需要什么头文件? 出错了... | |
| 
 | 
| 18楼#发布于:2002-08-15 13:47 
					tchar.h
 你可以用tchar,没有包含他吗? | |
| 19楼#发布于:2002-08-15 13:56 
					我换了TCHAR,还是出现运行出错,编译与链接都通过了,执行就爆出非法内存操作:(				 | |
| 
 | 
上一页
下一页
 
			
			
						
			
			
						
			
		 
							
 
				
 
				 
				