C语言函数字符串截取分割

将每行$开头的字符截取,并以逗号为标识,截取每组数据以$GPGGA这行为例,要求输出为$GPGGA045950.00A3958.46258N11620.55662E0.1... 将每行$开头的字符截取,并以逗号为标识,截取每组数据
以$GPGGA这行为例,要求输出为$GPGGA 045950.00 A 3958.46258 N 11620.55662 E 0.115 ……等等
展开
 我来答
百度网友d111d87
2012-04-27 · TA获得超过340个赞
知道小有建树答主
回答量:130
采纳率:100%
帮助的人:93.8万
展开全部

C标准库中提供了一个字符串分割函数strtok();

实现代码如下:

#include <stdio.h>

#include <string.h>

#define MAXSIZE 1024

int main(int argc, char * argv[])

{

char dates[MAXSIZE] = "$GPGGA,045950.00,A,3958.46258,N,11620.55662,E,0.115,,070511,,,A*76 ";

char *delim = ",";

char *p;

printf("%s  ",strtok(dates,delim));

while(p = strtok(NULL,delim))

{

printf("%s  ",p);

}

        printf("\n");

return 0;

运行结果截图如下:

xoalyg
推荐于2016-08-04 · TA获得超过4178个赞
知道大有可为答主
回答量:2356
采纳率:100%
帮助的人:2376万
展开全部
这个问题已经提出8天了,如果没记错的话,楼主还提高了悬赏分数,所以总是出现在“为我推荐的问题”的头条。之所以没有获得满意答案,原因有两条,一条是问题描述不够清晰(这些内容是否存在文本文件内),二是有数据的字段显示数据,但没有数据的字段(连续多个逗号)该如何显示呢(以空格代替,还是用特定字符)?带着这些疑问给出以下假设:数据以mydata.txt文件名存储,字段中的所有逗号以空格代替,连续多个逗号时,则用连续同样个数的空格代替。代码如下:
#include <stdio.h>
#include <stdlib.h>

int main() {
char s[1024],*p;
FILE *fp;
if((fp = fopen("mydata.txt","rt")) == NULL) {
printf("打开文件错!\n");
exit(1);
}
while(fgets(s,1024,fp) != NULL) {
if(s[0] != '$') continue;
p = s;
while((*p != '\n') && (*p != NULL)) {
if(*p == ',') *p = ' ';
++p;
}
*p = '\0';
puts(s);
}
fclose(fp);
return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式