标题: C语言数据溢出,帮忙改写下,谢谢 [打印本页]

作者: xupcb1983    时间: 2018-1-14 12:34
标题: C语言数据溢出,帮忙改写下,谢谢
  1. void str_chuli(char *s,int *n)
  2. {
  3. unsigned int num=0;
  4. char *p;
  5. int len;
  6. p=s;
  7. while(*p)
  8. {
  9.   if(*p!='.')
  10.   {
  11.    num = num*10+(*p-'0');
  12.   }
  13.   p++;
  14. }
  15. if(maxnt==7)
  16. {
  17.   if(num>=43243)
  18.   {
  19.    num=num*0.8;
  20.   }
  21.   else
  22.    return;
  23. }
  24. else if(maxnt==5)
  25. {
  26.   if(num>=10739)
  27.   {
  28.    num=num*0.8;
  29.   }
  30.   else
  31.    return;
  32. }
  33. inttostr(num,s,&len);
  34. if(num < 1000)
  35. {
  36.   s[0]='0';
  37.   s[1]='.';
  38.   s[2]= num/100 + '0';
  39.   s[3]= num%100/10 + '0';
  40.   s[4]=num%10+'0';
  41. }
  42. else
  43. {
  44.   s[len+1]='\0';
  45.   s[len]=s[len-1];
  46.   s[len-1]=s[len-2];
  47.   s[len-2]=s[len-3];
  48.   s[len-3]='.';
  49.   *n=len+1;
  50. }
  51. }
  52. void process ( char *buf,int *n)
  53. {
  54. int cnt=0;
  55. int i=0;
  56. int j=0;
  57. int k=0;
  58. int m=0;
  59. char temp[20];
  60. char temp1[20];
  61.   char *p;
  62.   char *q;
  63. p=buf;

  64. if(*n<=6)
  65.   return;
  66. if(buf[0]==' && buf[1]=='G' && buf[2]=='P' && buf[3]=='R' && buf[4]=='M' && buf[5]=='C')
  67. {
  68.   maxnt=7;
  69. }
  70. else if(buf[0]==' && buf[1]=='G' && buf[2]=='P' && buf[3]=='V' && buf[4]=='T' && buf[5]=='G')
  71. {
  72.   maxnt=5;
  73. }
  74. else
  75. {
  76.   return;
  77. }
  78.    
  79. while(p && m< *n)
  80. {
  81.   if(*p==',')
  82.   {
  83.    cnt++;
  84.   }
  85.   if(cnt==maxnt)
  86.   {
  87.    p++;
  88.    q=p;
  89.    while(*p!=',')
  90.    {
  91.     temp[i]=(char)*p;
  92.     p++;
  93.     i++;
  94.    }
  95.    temp[i]='\0';
  96.    str_chuli(temp,&i);
  97.    while(*p)
  98.    {
  99.     temp1[j]=(char)*p;
  100.     p++;
  101.     j++;
  102.    }
  103.    temp1[j]='\0';
  104.    for(k=0;k<i;k++)
  105.    {
  106.     *q=( char)temp[k];
  107.     q++;
  108.    }
  109.    for(k=0;k<=j;k++)
  110.    {
  111.     *q=( char)temp1[k];
  112.     q++;
  113.    }
  114.    *n=m+i+j;
  115.    return;     
  116.   }
  117.   p++;
  118.   m++;
  119. }
  120. return;
  121. }
  122. void delay500ms()
  123. {
  124. unsigned char i,j,k;
  125. for(i=15;i>0;i--)
  126.      for(j=202;j>0;j--)
  127.          for(k=81;k>0;k--);
  128. }
  129. void UartWrite( char *buf) //串口发送函数
  130. {
  131. unsigned char i;
  132.   char temp[100];
  133. int len;[/i][/i]
  134. [i][i]
  135. for(i=0;i<cntRxd;i++)
  136. {
  137.   temp[i]=*buf;     
  138.   //if(buf[0]==' && buf[1]=='G' && buf[2]=='P' && buf[3]=='R' && buf[4]=='M' && buf[5]=='C')
  139.   // temp[i]='a';
  140.   
  141. // else
  142.   // temp[i]='b';
  143.   buf++;
  144. }
  145. len=cn
复制代码

作者: xupcb1983    时间: 2018-1-14 17:29
计算结果要溢出数据
作者: zhichangxuexi    时间: 2018-1-14 19:54
楼主不错呀,力鼎
作者: myshare    时间: 2018-1-14 21:00
main函数呢?





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1