我是C的新人,所以我以前从未这样做过。 我正在做的是打开一个文件,解析数据并将结果打印在另一个文件中。 假设文件打开(在main函数中)是正常的,现在我使用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;
}
}
如果有人能帮助我,我将不胜感激。
答案 0 :(得分:1)
首先解析3
和time_str
,然后打印出来:
date_str