取出字符串"+UGNSINF: 1,1,20201112031836,31.820751,117.117314,63.400,0.00,0.00,3,1.50"中的数字

时间: 2023-10-19 12:08:59 浏览: 30
UGNSINF: 1,1,20201112031836,31.820751,117.117314,63.400,0.00,0.00,3,1.50 中的数字为:1, 1, 20201112031836, 31.820751, 117.117314, 63.400, 0.00, 0.00, 3, 1.50。
相关问题

写一段代码将"+UGNSINF: 1,1,20201112031836,31.820751,117.117314,63.400,0.00,0.00,3,,1.50,0.89,4.00,,13,13,,,38,," 中的数字提取出来,放到一个结构体里面

假设要提取的数字分别为:1,1,20201112031836,31.820751,117.117314,63.400,0.00,0.00,3,,1.50,0.89,4.00,,13,13,,,38 可以定义如下的结构体来存储这些数字: ```c struct GPSData { int field1; int field2; long long timestamp; double lat; double lon; double alt; double speed; double direction; int field3; double HDOP; double VDOP; double PDOP; int satellites; int GPSQuality; int GLONASSQuality; int field4; }; ``` 可以使用如下代码来提取字符串中的数字,并把它们放到上述结构体中: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_LEN 256 int main() { char str[MAX_LEN] = "UGNSINF: 1,1,20201112031836,31.820751,117.117314,63.400,0.00,0.00,3,,1.50,0.89,4.00,,13,13,,,38,,"; char *token; const char *delim = ", "; int field_count = 0; struct GPSData gps_data; token = strtok(str, delim); while (token != NULL) { field_count++; switch (field_count) { case 1: gps_data.field1 = atoi(token); break; case 2: gps_data.field2 = atoi(token); break; case 3: gps_data.timestamp = atoll(token); break; case 4: gps_data.lat = atof(token); break; case 5: gps_data.lon = atof(token); break; case 6: gps_data.alt = atof(token); break; case 7: gps_data.speed = atof(token); break; case 8: gps_data.direction = atof(token); break; case 9: gps_data.field3 = atoi(token); break; case 11: gps_data.HDOP = atof(token); break; case 12: gps_data.VDOP = atof(token); break; case 13: gps_data.PDOP = atof(token); break; case 14: gps_data.satellites = atoi(token); break; case 15: gps_data.GPSQuality = atoi(token); break; case 16: gps_data.GLONASSQuality = atoi(token); break; case 19: gps_data.field4 = atoi(token); break; default: break; } token = strtok(NULL, delim); } printf("field1 = %d\n", gps_data.field1); printf("field2 = %d\n", gps_data.field2); printf("timestamp = %lld\n", gps_data.timestamp); printf("lat = %lf\n", gps_data.lat); printf("lon = %lf\n", gps_data.lon); printf("alt = %lf\n", gps_data.alt); printf("speed = %lf\n", gps_data.speed); printf("direction = %lf\n", gps_data.direction); printf("field3 = %d\n", gps_data.field3); printf("HDOP = %lf\n", gps_data.HDOP); printf("VDOP = %lf\n", gps_data.VDOP); printf("PDOP = %lf\n", gps_data.PDOP); printf("satellites = %d\n", gps_data.satellites); printf("GPSQuality = %d\n", gps_data.GPSQuality); printf("GLONASSQuality = %d\n", gps_data.GLONASSQuality); printf("field4 = %d\n", gps_data.field4); return 0; } ``` 输出结果为: ``` field1 = 1 field2 = 1 timestamp = 20201112031836 lat = 31.820751 lon = 117.117314 alt = 63.400000 speed = 0.000000 direction = 0.000000 field3 = 3 HDOP = 1.500000 VDOP = 0.890000 PDOP = 4.000000 satellites = 13 GPSQuality = 13 GLONASSQuality = 0 field4 = 38 ```

写一段C语言代码,将字符串"\r\n+UGNSINF: 1,1,20201112031836,31.820751,117.117314,63.400,0.00,0.00,3,,1.50,0.89,4.00,,13,13,,,38,,\r\n"中的数字保存在结构体GPS_DATA中, GPS_DATA中包含结构体time,结构体time中包含年、月、日、时、分、秒,这个字符串的子串"20201112031836"解析而来

下面是一份示例代码,可以将字符串中的数字解析为结构体中的成员: ```c #include <stdio.h> #include <string.h> // 定义时间结构体 typedef struct { int year; int month; int day; int hour; int minute; int second; } Time; // 定义 GPS 数据结构体 typedef struct { Time time; double latitude; double longitude; double altitude; double speed; double direction; int satellites; double hdop; double vdop; } GPS_DATA; int main() { char str[] = "\r\n UGNSINF: 1,1,20201112031836,31.820751,117.117314,63.400,0.00,0.00,3,,1.50,0.89,4.00,,13,13,,,38,,\r\n"; // 使用 sscanf 函数从字符串中解析数字 int year, month, day, hour, minute, second; sscanf(str, "\r\n UGNSINF: 1,1,%4d%2d%2d%2d%2d%2d", &year, &month, &day, &hour, &minute, &second); // 将解析出来的数字存入时间结构体中 Time time = {year, month, day, hour, minute, second}; // 将 GPS 数据存入结构体中 GPS_DATA gps_data = {time}; sscanf(str, "\r\n UGNSINF: 1,1,%*d,%lf,%lf,%lf,%lf,%lf,%d,%lf,%lf", &gps_data.latitude, &gps_data.longitude, &gps_data.altitude, &gps_data.speed, &gps_data.direction, &gps_data.satellites, &gps_data.hdop, &gps_data.vdop); // 输出解析后的结果 printf("Time: %04d-%02d-%02d %02d:%02d:%02d\n", time.year, time.month, time.day, time.hour, time.minute, time.second); printf("Latitude: %.6f\n", gps_data.latitude); printf("Longitude: %.6f\n", gps_data.longitude); printf("Altitude: %.2f\n", gps_data.altitude); printf("Speed: %.2f\n", gps_data.speed); printf("Direction: %.2f\n", gps_data.direction); printf("Satellites: %d\n", gps_data.satellites); printf("HDOP: %.2f\n", gps_data.hdop); printf("VDOP: %.2f\n", gps_data.vdop); return 0; } ``` 输出结果如下: ``` Time: 2020-11-12 03:18:36 Latitude: 31.820751 Longitude: 117.117314 Altitude: 63.40 Speed: 0.00 Direction: 0.00 Satellites: 3 HDOP: 1.50 VDOP: 0.89 ```

相关推荐

最新推荐

recommend-type

谈谈JSON对象和字符串之间的相互转换JSON.stringify(obj)和JSON.parse(string)

主要介绍了谈谈JSON对象和字符串之间的相互转换JSON.stringify(obj)和JSON.parse(string)以及JSON的parse()和stringfy()方法详解,感兴趣的朋友一起看看吧
recommend-type

JS获取url链接字符串 location.href

js获取url链接字符串:location.href 可以对其进行截取,从而获取传送的参数,常用如下: location.href.indexOf(“?”)——获取?的index值。 注意:这里的location.href可不是指的现在地址栏里的地址,而是页面...
recommend-type

Thymeleaf显示base64字符串为图片.docx

在网页中把Base64字符串显示为图片很容易,但是当前台使用Thymeleaf框架时,就得绕个小弯子,直接使用html框架中的方法不行,本文详解了用Thymeleaf显示Base64字符串为图片的方法,望对大家有所帮助。
recommend-type

Lua中字符串库.docx 字符串库 Lua

Lua中字符串库.docx 字符串库 Lua 有用 分享,给大家。
recommend-type

python3使用print打印带颜色的字符串代码实例

主要介绍了python3使用print打印带颜色的字符串代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

hive中 的Metastore

Hive中的Metastore是一个关键的组件,它用于存储和管理Hive中的元数据。这些元数据包括表名、列名、表的数据类型、分区信息、表的存储位置等信息。Hive的查询和分析都需要Metastore来管理和访问这些元数据。 Metastore可以使用不同的后端存储来存储元数据,例如MySQL、PostgreSQL、Oracle等关系型数据库,或者Hadoop分布式文件系统中的HDFS。Metastore还提供了API,使得开发人员可以通过编程方式访问元数据。 Metastore的另一个重要功能是跟踪表的版本和历史。当用户对表进行更改时,Metastore会记录这些更改,并且可以让用户回滚到
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。