日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言 字符串转浮点型函数

發布時間:2023/12/31 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言 字符串转浮点型函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

寫了一個將字符串轉換為浮點型的函數,用于上位機與單片機的數據傳輸。該函數只需傳入一個字符串數組(指針)與一個用于存放轉換數據的double類型的數組,即可完成數據的轉換。該函數可以輸入任意長度的字符串(包含任意個數的浮點數)并且對任意浮點數都有效(無論正負與位數多少),只需在每個浮點數之間用逗號隔開,并且在結尾處加上分號結束。

以下是代碼:

1、聲明

//參數的含義:*string:包含數字信息的字符串,數字之間需要用逗號隔開,結尾為分號,如:11.2,-23.6,63.5; //*data:儲存轉換后數據的數組. void string_to_float(char *string, double *data);

2、函數

#include "math.h"void string_to_float(char *string, double *data) {unsigned int i=0,j=0,k=0;unsigned char flag=0; //判斷正負號的標志unsigned char flag_dot=1; //判斷小數點的標志double num=0; //臨時存儲計算結果的變量for(i=0;*(string+i)!=';';i++) //循環直到字符串結尾{if(*(string+i)>='0'&&*(string+i)<='9'&&flag_dot==1) //如果當前字符為數字且在小數點之前{if(j==0) num = num*pow(10,j)+(double)(*(string+i)-'0'); //運算并存儲中間計算結果else num = num*pow(10,1)+(double)(*(string+i)-'0');j++;}else if(*(string+i)>='0'&&*(string+i)<='9'&&flag_dot==0) //如果當前字符為數字且在小數點之后{num = num+(double)(*(string+i)-'0')*pow(0.1,j+1); //運算并存儲中間計算結果j++;}else if(*(string+i)=='.') //讀到了小數點則將對應標志位數值改變{flag_dot=0;j=0;}else if(*(string+i)=='-') //讀到減號同樣改變對應標志位的值{flag = 1;}else if(*(string+i)==',') //讀完一個數據,重置標志位,記錄最終計算結果{*(data+k) = num*pow(-1,flag);flag = 0;flag_dot=1;j=0;k++;num = 0;}}*(data+k) = num*pow(-1,flag); //補上最后一個數 }

該函數完全匹配正點原子的串口接收代碼,只需要將存儲接收數據的數組指針USART_RX_BUF傳入函數即可。代碼如下

if(USART_RX_STA&0x8000){ if (USART_RX_BUF[0]=='M'){string_to_float(USART_RX_BUF, data); printf("%f,%f,%f,%f,%f,%f;\r\n",data[0],data[1],data[2],data[3],data[4],data[5]);USART_RX_STA=0;}}

這里的if (USART_RX_BUF[0]=='M')只是為了判斷字符串數據幀的頭部,不要也可,而且在字符串前面添加想要的數據頭也不會影響計算結果,運行結果如下:

?直接輸入字符串也是一樣的

string_to_float("-3.258,64.211,-118.38,-35.233,114503.258211,-2511235.3878;", data); printf("%f,%f,%f,%f,%f,%f;\r\n",data[0],data[1],data[2],data[3],data[4],data[5]);

相關的頭文件與.c文件也上傳了,審核中。

總結

以上是生活随笔為你收集整理的c语言 字符串转浮点型函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。