不要后面的$GPGSV,1,1,00,0*65$BDGSV,1,1,00,0*74数据
时间: 2023-09-14 09:07:18 浏览: 36
在上面的代码中,我们只需要复制 `$GNRMC` 后面的数据,可以使用 `strchr()` 函数查找 `$GNRMC` 的位置,然后使用指针和字符串处理函数将该数据保存到一个新的字符串中。
以下是修改后的示例代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char buf[1282] = "$GPGSV,1,1,00,0*65$BDGSV,1,1,00,0*74 \
$GNRMC,072241.000,A,2253.7207,N,11350.7061,E,0.00,0.00,030517,,,A*70 \
$GPGSV,1,1,00,0*65$BDGSV,1,1,00,0*74";
char search[] = "$GNRMC,";
char *result;
char *end;
char data[128];
// 查找需要的字符串的位置
result = strstr(buf, search);
// 判断查找结果是否为NULL
if (result != NULL) {
// 定位数据结束的位置
end = strchr(result, '$');
if (end != NULL) {
*end = '\0'; // 添加字符串结束符
// 复制数据到 data 变量中
strcpy(data, result);
// 打印查找到的字符串
printf("Result: %s\n", data);
}
} else {
printf("'%s' not found in '%s'\n", search, buf);
}
return 0;
}
```
这个示例代码会在 `buf` 中查找 `$GNRMC`,如果找到了,就将该数据复制到 `data` 变量中,并打印出来。输出结果为:
```
Result: $GNRMC,072241.000,A,2253.7207,N,11350.7061,E,0.00,0.00,030517,,,A*70
```
注意,这里使用了 `strchr()` 函数查找数据结束的位置,并在末尾添加一个字符串结束符。如果你需要对复制的字符串进行修改,可以使用 `strncpy()` 函数,它不会自动添加字符串结束符,需要手动添加。