找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1209|回复: 3
打印 上一主题 下一主题
收起左侧

C语言数据溢出,帮忙改写下,谢谢

[复制链接]
回帖奖励 100 黑币 回复本帖可获得 100 黑币奖励! 每人限 1 次(中奖概率 50%)
跳转到指定楼层
楼主
ID:268520 发表于 2018-1-14 12:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  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
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:268520 发表于 2018-1-14 17:29 | 只看该作者
计算结果要溢出数据
回复

使用道具 举报

板凳
ID:275948 发表于 2018-1-14 19:54 | 只看该作者
楼主不错呀,力鼎
回复

使用道具 举报

地板
ID:266584 发表于 2018-1-14 21:00 | 只看该作者
main函数呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表