gpt4 book ai didi

c - 用C语言解析数据格式

转载 作者:行者123 更新时间:2023-11-30 15:11:55 24 4
gpt4 key购买 nike

我是 C 语言新手,所以我以前从未这样做过。我正在做的是打开一个文件,解析数据并将结果打印在另一个文件中。假设文件打开(在主函数中)正常,现在我使用 strtok() 函数来中断标记中的字符串。

使用上面的函数我得到一个像这样的输出文件:

{"date": "11:20:50.359", "date": "08-02-16"}

但我想要的是获取数据:

{"date": "11:20:50.359 08-02-16"}

这是我的代码:

void tokenize( char *oneline, FILE *fileName){

const char delimiter[6] = DELIMITER__;
char *token;
int counter = 0;

/* get the first token */
token = strtok(oneline, delimiter);

char time_str[50];
char date_str[50];

/* walk through other tokens */
while( token != NULL ) {

if (counter == 1 ){
char * strA = "\"", * strB = ":", str[50], strC[50], strD[50];
int v = 0, x = 3, y = 6, z=13;

strncpy(str,token,v);
str[v] = '\0';
strcat(str,strA);
strcat(str,token+v);

strncpy(strC,str,x);
strC[x] = '\0';
strcat(strC,strB);
strcat(strC,str+x);

strncpy(strD,strC,y);
strD[y] = '\0';
strcat(strD,strB);
strcat(strD,strC+y);

strncpy(time_str,strD,z);
time_str[z] = '\0';
strcat(time_str,strA);
strcat(time_str,strD+z);

fprintf(fileName, "%s", "\"date\": ");
fprintf(fileName,"%s, ", time_str);
}

if (counter == 9 ){
char * strA = "\"", * strB = "-", str[50], strC[50], strD[50];
int v = 0, x = 3, y = 6, z=9;

strncpy(str,token,v);
str[v] = '\0';
strcat(str,strA);
strcat(str,token+v);

strncpy(strC,str,x);
strC[x] = '\0';
strcat(strC,strB);
strcat(strC,str+x);

strncpy(strD,strC,y);
strD[y] = '\0';
strcat(strD,strB);
strcat(strD,strC+y);

strncpy(date_str,strD,z);
date_str[z] = '\0';
strcat(date_str,strA);
strcat(date_str,strD+z);

fprintf(fileName, "%s", "\"date\": ");
fprintf(fileName,"%s", date_str);
}

token = strtok(NULL, delimiter);
++counter;
}
}

如果有人能帮助我,我将不胜感激。

最佳答案

先解析time_strdate_str,然后打印出来:

void tokenize(char *oneline, FILE *fileName) {
const char delimiter[6] = DELIMITER__;
char time_str[50];
char date_str[50];
char *token;
int counter = 0;
/* parse time and date */
for(token = strtok(oneline, delimiter);
token != NULL;
token = strtok(NULL, delimiter), ++counter)
{
if(counter == 1) {
char *strA = "\"", *strB = ":", str[50], strC[50], strD[50];
int v = 0, x = 3, y = 6, z=13;
strncpy(str,token,v);
str[v] = '\0';
strcat(str,strA);
strcat(str,token+v);
strncpy(strC,str,x);
strC[x] = '\0';
strcat(strC,strB);
strcat(strC,str+x);
strncpy(strD,strC,y);
strD[y] = '\0';
strcat(strD,strB);
strcat(strD,strC+y);
strncpy(time_str,strD,z);
time_str[z] = '\0';
strcat(time_str,strA);
strcat(time_str,strD+z);
} else if (counter == 9) {
char *strA = "\"", *strB = "-", str[50], strC[50], strD[50];
int v = 0, x = 3, y = 6, z=9;
strncpy(str,token,v);
str[v] = '\0';
strcat(str,strA);
strcat(str,token+v);
strncpy(strC,str,x);
strC[x] = '\0';
strcat(strC,strB);
strcat(strC,str+x);
strncpy(strD,strC,y);
strD[y] = '\0';
strcat(strD,strB);
strcat(strD,strC+y);
strncpy(date_str,strD,z);
date_str[z] = '\0';
strcat(date_str,strA);
strcat(date_str,strD+z);
}
}
if(counter < 10) {
/* handle error case */
} else {
fprintf(fileName,"\"date\": %s %s", time_str, date_str);
}
}

关于c - 用C语言解析数据格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35337186/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com