字符串处理问题 ! 高手请进 ;
有个字符串 number:AAAA = usename : BBBB;
我想把number 和 username 分别取出来, : , AAAA , = , BBBB都是固定的;
只能用C 去做 ;
谢谢
问题点数:0、回复次数:10Top
1 楼yxxng(好好学习,天天向上!)回复于 2005-04-03 18:04:34 得分 0
先strstr把number和usename位置确定下来,再取出:,AAAA,=,BBBBTop
2 楼bzwm(不走完美)回复于 2005-04-03 18:47:28 得分 0
如果楼主不想用 string 处理的话,或许可以试试用指针啊,把number和usename位置上的char赋给一个char类型的数组,然后再把指针向后一动四位继续判断!
小弟对C了解很少,用这种方法不好做!楼主你加油!Top
3 楼delphijava((好之者不如乐之者))回复于 2005-04-03 18:48:08 得分 0
我现在要取出的是 number , username ;
有代码吗 ? 我用strchr 可是很难出来Top
4 楼ra3(军机大臣)回复于 2005-04-03 19:09:18 得分 0
void fun2(char *str, char *a, char *b)
{
char *p = str;
// 取 "number"
for (int i = 0; *p != 0 && *p != ':'; a[i++] = *(p++));
// 取 "usename"
p = strstr(str, "=");
p++;
for (int i = 0; *p != 0 && *p != ':'; b[i++] = *(p++));
}
int main()
{
//*//
char str[] = "number:AAAA = usename : BBBB;";
char A[10] = {0};
char B[10] = {0};
fun2(str, A, B);
cout << "A: " << A << endl;
cout << "B: " << B << endl;
//*/
getch();
}Top
5 楼ra3(军机大臣)回复于 2005-04-03 19:10:28 得分 0
如果 : = : 这样的格式固定的话可以用 fun2 函数;
其它的就自己改吧.
Top
6 楼kozzii(double-double)回复于 2005-04-03 19:37:41 得分 0
void make(char* in,char*number,char* usename)
{
char a[] = ":AAAA = ";
char b[]=" : BBBB";
char *p=in,*q;
q=strstr(in,a);
while(p!=q) *number++=*p++;
*number='\0';
q=strstr(in,b);
p+=strlen(a);
while(p!=q) *usename++=*p++;
*usename='\0';
}Top
7 楼kobefly(科比--网络学习中)回复于 2005-04-03 19:44:35 得分 0
我想你可以这样做
先用strtok用":="把字符串分离
然后跟“AAAA”"BBBB"用strcmp比较
就可以取到你想要的东西了Top
8 楼coldcrane(清风明月)回复于 2005-04-04 00:46:36 得分 0
char number[256] = {0,};
char username[256] = {0,};
char *s = "number:AAAA = usename : BBBB;";
sscanf(s,"%[^:]:AAAA = %[^ ]",number,username);
自己处理buffer溢出的问题。Top
9 楼delphijava((好之者不如乐之者))回复于 2005-04-04 14:06:06 得分 0
先谢谢
kozzii(double-double)
ra3(黑鹰) 还有各位参于者 ;
还有
coldcrane(清风明月) :
我这个也太高了!
我现在一下看不处来它的原理!
Top
10 楼delphijava((好之者不如乐之者))回复于 2005-04-04 17:15:49 得分 0
楼上的 ;
我们在谈C,不是VC;
用C的大都是 嵌入系统 ;
LINUX ,UNIX下编程Top




