Frage:
Hallo, ich möchte gerne einen sehr langen String parsen. Dafür kann ich den delimiter semikolon ; verwenden. So weit so gut. Nur mein Problem ist dass in dem langen String oftmals ein doppelter semikolon vorkommt, z.b ;;. Aufgrund dessen kommt es bei dem parsen zum Fehler. Kann ich da etwas machen? Bzw. wie kann ich den String eindeutig parsen auch wenn an unterschiedlichen stellen manchmal ;; vorkommt? Zur Info: Ein doppelter ;; bedeutet dass da Daten fehlen.
Bei dem array r[BUF] kommt ein ;; vor.
Code:
#include <stdio.h>
#include <string.h>
#define BUF 100
int main()
{
char array[] ="10000;07/01/1986;68391610;68391610;OPTIMUM MANUFACTURING INC;OMFGA; 7952;10;A; 10396; 3;3;3990;3990;39;399;03/12/1986;OMFGA;;Q;A;R; -2.56250; 1000; .; 2.75000; 2.37500; .; .; .; C; C; 3680;2;30/01/1986; .; .; .; .; .; .; .; .; .; .; .; .; 1.00000; 1.00; .; .; .; .; . 1; 1; 9; 2; 0.013809; 0.013800; 0.011061; 0.011046; 0.014954\n";
char a[BUF],b[BUF],c[BUF],d[BUF],e[BUF],f[BUF],g[BUF],h[BUF],i[BUF],j[BUF],k[BUF],l[BUF],m[BUF],n[BUF],o[BUF],p[BUF],q[BUF],r[BUF],s[BUF],tt[BUF],u[BUF],v[BUF]; // a->PERMNO; b->date; c->CUSIP; d->NCUSIP; e->COMNAM; f->DIVAMT; g->CFACPR
char w[BUF],x[BUF],y[BUF],z[BUF],aa[BUF],ab[BUF],ac[BUF],ad[BUF],ae[BUF],af[BUF],ag[BUF],ah[BUF],ai[BUF],aj[BUF],ak[BUF],al[BUF],am[BUF],an[BUF],ao[BUF],ap[BUF];
char aq[BUF],ar[BUF],as[BUF],at[BUF],au[BUF],av[BUF],aw[BUF],ax[BUF],ay[BUF],az[BUF],ba[BUF],bb[BUF],bc[BUF],bd[BUF],be[BUF],bf[BUF],bg[BUF],bh[BUF],bi[BUF],bj[BUF],bk[BUF];
sscanf(array, "%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];%[^;];",a,b,c,d,e,f, g, h, i, j, k, l, m ,n, o,p,q,r,s,tt,u,v,w,x,y,z,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,ba,bb,bc,bd,be,bf,bg,bh,bi,bj);
printf("%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s\n",a,b,c,d,e,f, g, h, i, j, k, l, m ,n, o,p,q,r,s,tt,u,v,w,x,y,z,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,ba,bb,bc,bd,be,bf,bg,bh,bi,bj);
return 0;
}