C语言函数字符串截取分割
将每行$开头的字符截取,并以逗号为标识,截取每组数据以$GPGGA这行为例,要求输出为$GPGGA045950.00A3958.46258N11620.55662E0.1...
将每行$开头的字符截取,并以逗号为标识,截取每组数据
以$GPGGA这行为例,要求输出为$GPGGA 045950.00 A 3958.46258 N 11620.55662 E 0.115 ……等等 展开
以$GPGGA这行为例,要求输出为$GPGGA 045950.00 A 3958.46258 N 11620.55662 E 0.115 ……等等 展开
2个回答
展开全部
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;
}
运行结果截图如下:
展开全部
这个问题已经提出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;
}
#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;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询