#include <stdio.h> struct data { char name[5]; int bright_r; int bright_g; int bright_b; int rate_r; int rate_g; int rate_b; int time_r; int time_g; int time_b; }; int getbright(char str[]) { int b=0; int i=0; for( i=0;str[i]!='%';i++) { b=b*10+str[i]-'0'; } return b; } int getrate(char str[]) { int b=0; int i=0; for( i=0;str[i]!='H';i++) { b=b*10+str[i]-'0'; } return b; } int gettime(char str[]) { int m=0; int s=0; int i=0; int flag=0; for( i=0;str[i]!='/0';i++) { if(str[i]==':') { flag=1; continue; } if(flag==0) { m=m*10+str[i]-'0'; } else { s=s*10+str[i]-'0'; } } return m*60+s; } char* strcpy1(char * dst, const char * src) { char * cp = dst; while( *cp++ = *src++ ) ; /* Copy src over dst */ return( dst ); } void getdata(char str[],struct data *d) { int i=0; int start=0; char ds[13][8]; int dsi=0; for(i=0;str[i]!='/0';i++) { if(str[i]=='#') { str[i]='/0'; strcpy1(ds[dsi++],&str[start]); // ds[dsi++]=str[start]; start=i+1; } } //d->name=&ds[0]; strcpy1(d->name,ds[0]); d->bright_r=getbright(ds[1]); d->bright_g=getbright(ds[2]); d->bright_b=getbright(ds[3]); d->rate_r=getrate(ds[4]); d->rate_g=getrate(ds[5]); d->rate_b=getrate(ds[6]); d->time_r=gettime(ds[7]); d->time_g=gettime(ds[8]); d->time_b=gettime(ds[9]); } int equal(char *str1,char *str2) { return str1[3]==str2[3]; } int main(int argc, char *argv[]) { struct data d1,d2,*dp=&d1,*dp2=&d2; char str1[80]="led1#80%#70%#60%#50Hz#40Hz#30Hz#01:10#02:10#03:10#"; char str2[80]="led2#180%#00%#60%#50Hz#40Hz#30Hz#59:10#02:10#03:10#"; int status=0; getdata(str1,dp); getdata(str2,dp2); status=equal(dp->name,dp2->name); status=equal(&(dp2->name[0]),&(dp2->name[0])); return 0; }