标题:[求助] 看程序!有问题不知道怎么解决!
取消只看楼主
blackkey
Rank: 1
等 级:新手上路
帖 子:159
专家分:0
注 册:2005-6-8
 问题点数:0 回复次数:9 
[求助] 看程序!有问题不知道怎么解决!

先看代码:

#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编辑过]

搜索更多相关主题的帖子: 2011 void include 
2006-06-27 16:09
blackkey
Rank: 1
等 级:新手上路
帖 子:159
专家分:0
注 册:2005-6-8
得分:0 
s[100]="QN=20040516010101001;ST=32;CN=2011;PW=123456;MN=88888880000001;Flag=3;CP=&&12345&&";


这样会输出的MN会出现乱码的`~~~

[此贴子已经被作者于2006-6-27 16:36:04编辑过]


2006-06-27 16:25
blackkey
Rank: 1
等 级:新手上路
帖 子:159
专家分:0
注 册:2005-6-8
得分:0 

终于找到乱码的原因拉`~~

      substring(v1,s1,isp+2,iep-(isp+1))  ; //这里调用函数:substring() ;
      这里取得的值是对的~~

      qn = v1 ;
      
      这里转换后就部分成了乱码~~ 但是有的时候又不会出现 有的时候又会出现乱码~

[此贴子已经被作者于2006-6-27 17:11:42编辑过]


2006-06-27 17:11
blackkey
Rank: 1
等 级:新手上路
帖 子:159
专家分:0
注 册:2005-6-8
得分:0 

全部代码~ 有两个地方出现乱码~~我已标出来拉`~~~~红颜色的~~~

#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;
}


2006-06-27 17:18
blackkey
Rank: 1
等 级:新手上路
帖 子:159
专家分:0
注 册:2005-6-8
得分:0 

怎么没人啊`~`
自己顶


2006-06-28 08:53
blackkey
Rank: 1
等 级:新手上路
帖 子:159
专家分:0
注 册:2005-6-8
得分:0 

帮帮忙


2006-06-28 09:29
blackkey
Rank: 1
等 级:新手上路
帖 子:159
专家分:0
注 册:2005-6-8
得分:0 

哦 改改试试`
~


2006-06-28 13:23
blackkey
Rank: 1
等 级:新手上路
帖 子:159
专家分:0
注 册:2005-6-8
得分:0 
我是新手啊`~搞不动这些警告是怎么回事~~高手指点以下啊

2006-06-28 13:27
blackkey
Rank: 1
等 级:新手上路
帖 子:159
专家分:0
注 册:2005-6-8
得分:0 
我把警告全部改过来拉`~还是出现乱码`~高手指点以下

2006-06-28 13:38
blackkey
Rank: 1
等 级:新手上路
帖 子:159
专家分:0
注 册:2005-6-8
得分:0 

呵呵`~问题解决拉`~~谢谢各位高手`~

这个程序用来做通讯协议的数据包解包~~~


2006-06-29 13:24



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-75186-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.070704 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved