读书人

字符串格式化解决方案

发布时间: 2012-03-15 11:50:38 作者: rapoo

字符串格式化
怎么快速将下面的字符串格式化
22222222#0722007080300000020070803235900
格式化后
22222222,#072,2007-08-03 00:00:00,2007-08-03 23:59:00

[解决办法]
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char* argv[])
{
char *s= "22222222#0722007080300000020070803235900 ", d[80];
char tmp[20];
int t, dindex=0, sindex;

sscanf(s, "%d ", &t);
dindex += sprintf(d+dindex, "%d ", t);
sindex = dindex;

sscanf(s+sindex, "%4s ", tmp);
dindex += sprintf(d+dindex, ",%s ", tmp);
sindex += 4;

for (t=0; t <2; t++)
{
sscanf(s+sindex, "%4s ", tmp);
dindex += sprintf(d+dindex, ",%s ", tmp);
sindex += 4;

sscanf(s+sindex, "%2s ", tmp);
dindex += sprintf(d+dindex, "-%s ", tmp);
sindex += 2;

sscanf(s+sindex, "%2s ", tmp);
dindex += sprintf(d+dindex, "-%s ", tmp);
sindex += 2;

sscanf(s+sindex, "%2s ", tmp);
dindex += sprintf(d+dindex, " %s ", tmp);
sindex += 2;

sscanf(s+sindex, "%2s ", tmp);
dindex += sprintf(d+dindex, ":%s ", tmp);
sindex += 2;

sscanf(s+sindex, "%2s ", tmp);
dindex += sprintf(d+dindex, ":%s ", tmp);
sindex += 2;
}

puts(d);
return 0;
}
[解决办法]
#include <stdio.h>

int main()
{
char str[] = "22222222#0722007080300000020070803235900 ";
char str1[10];
char str2[10];
char str3[10];
char str4[10];
char str5[10];
char str6[10];
char str7[10];
char str8[10];
char str9[10];
char str10[10];
char str11[10];
char str12[10];
char str13[10];
char str14[10];


sscanf(str, "%8s%4s%4s%2s%2s%2s%2s%2s%4s%2s%2s%2s%2s%2s ", str1, str2, str3, str4,str5, str6, str7, str8,str9, str10, str11, str12,str13, str14);

printf( "%s,%s,%s-%s-%s %s:%s:%s,%s-%s-%s %s:%s:%s\n ", str1, str2, str3, str4,str5, str6, str7, str8,str9, str10, str11, str12,str13, str14);

return 0;
}


汗。。。。。。。。

读书人网 >C语言

热点推荐