这样会输出的MN会出现乱码的`~~~
[此贴子已经被作者于2006-6-27 16:36:04编辑过]
----------------解决方案--------------------------------------------------------
我看不懂?
----------------解决方案--------------------------------------------------------
先看代码:
#include <string.h>
#include <stdio.h>
char * fun(char *str1,char *str2,int a,int b);
void main( )
{
char s[]="QN=20040516010101001;ST=32;CN=2011;PW=123456;MN=88888880000001;Flag=3;CP=&&12&&";
char *p=s;
char *s1=s;
char *v1 ;
char *qn ;
char isp ;
char iep ;
/*******取QN***************/
p=strchr(p,'QN=') ;
isp = p-s ;
p++;
p=strchr(p,';') ;
iep = p-s ;
substring(v1,s1,isp+2,iep-(isp+1)) ; //这里调用函数:substring() ;
qn = v1 ;
printf("QN:%s\n",qn);
}
char * substring(char *str1,char *str2,int a,int b)
{
char *ptr1=str1;
long i ;
for(i=a;i<a+b;i++)
{
*ptr1=*(str2+i-1);
ptr1++ ;
}
*ptr1=0;
return str1;
}
这个就可以取字符串QN的值! 但是 当字符串
s[]="QN=20040516010101001;ST=32;CN=2011;PW=123456;MN=88888880000001;Flag=3;CP=&&12345&&"; 的时候就出现未知错误!
也就是说字符串 s[] 再长点就出现错误,
高手指点以下!~~~~~~
[此贴子已经被作者于2006-6-27 16:26:43编辑过]
[此贴子已经被作者于2006-6-27 16:36:04编辑过]
终于找到乱码的原因拉`~~
substring(v1,s1,isp+2,iep-(isp+1)) ; //这里调用函数:substring() ;
这里取得的值是对的~~
qn = v1 ;
这里转换后就部分成了乱码~~ 但是有的时候又不会出现 有的时候又会出现乱码~
[此贴子已经被作者于2006-6-27 17:11:42编辑过]
全部代码~ 有两个地方出现乱码~~我已标出来拉`~~~~红颜色的~~~
#include <string.h>
#include <stdio.h>
char * fun(char *str1,char *str2,int a,int b);
void main( )
{
char s[100]="QN=20040516010101001;ST=32;CN=2011;PW=123456;MN=88888880000001;Flag=3;CP=&&11&&";
char *p=s;
char *s1=s;
char *v1 ;
char *qn ;
char *st ;
char *cn ;
char *pw ;
char *mn ;
char *Flag ;
char *cp ;
char *ppp ;
char isp ;
char iep ;
isp = 0 ;
/*******取QN***************/
p=strchr(p,'QN=') ;
isp = p-s ;
p++;
p=strchr(p,';') ;
iep = p-s ;
substring(v1,s1,isp+2,iep-(isp+1)) ; //这里调用函数:FUN
qn = v1 ;
printf("QN:%s\n",qn);
/********取ST************/
p = strchr(p,'=') ;
isp = p-s ;
p = strchr(p,';') ;
iep = p-s ;
substring(v1,s1,isp+2,iep-(isp+1));
st = v1 ;
printf("ST:%s\n",st) ;
/********取CN************/
p = strchr(p,'=') ;
isp = p-s ;
p = strchr(p,';') ;
iep = p-s ;
substring(v1,s1,isp+2,iep-(isp+1));
cn = v1 ;
printf("CN:%s\n",cn) ;
/********取PW************/
p = strchr(p,'=') ;
isp = p-s ;
p = strchr(p,';') ;
iep = p-s ;
substring(v1,s1,isp+2,iep-(isp+1));
pw = v1 ;
printf("PW:%s\n",pw) ;
/********取MN************/
p = strchr(p,'=') ;
isp = p-s ;
p = strchr(p,';') ;
iep = p-s ;
substring(v1,s1,isp+2,iep-(isp+1));
mn = v1 ; //这个数值出现乱码!!!别的值很正常!!一个地方
printf("MN:%s\n",mn) ;
/********取Flag************/
p = strchr(p,'=') ;
isp = p-s ;
p = strchr(p,';') ;
iep = p-s ;
substring(v1,s1,isp+2,iep-(isp+1));
Flag = v1 ;
printf("Flag:%s\n",Flag) ;
/********取CP************/
p = strchr(p,'=&&') ;
isp = p-s ;
p = p+2 ;
p = strchr(p,'&&') ;
iep = p-s ;
substring(v1,s1,isp+3,iep-(isp+2));
cp = v1 ; //这里也出现乱码 别的值很正常!!两个地方
printf("CP:%s\n",cp) ;
}
char * substring(char *str1,char *str2,int a,int b)
{
char *ptr1=str1;
long i ;
for(i=a;i<a+b;i++)
{
*ptr1=*(str2+i-1);
ptr1++ ;
}
*ptr1=0;
return str1;
}
怎么没人啊`~`
自己顶
怎么没人啊`~`
自己顶
都是世界杯惹的祸。They are sleeping...
帮帮忙