2 Replies - 334 Views - Last Post: 13 September 2013 - 02:01 AM Rate Topic: -----

#1 maverickjd  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 3
  • Joined: 11-September 13

Need help in File Parsing in C/C++ !

Posted 12 September 2013 - 10:37 PM

The requirement is to capture statistics of uuid occurrences for ALIVE/SEARCH/BYEBYE (it can be all 3, combinations of 2 each, or one alone) in a dynamically populated file in run time.

I am able to print all 3 combinations, but not in combination of 1 or 2 e.g.

If my input.txt is like this :
uuid:22314754-a597-490b-8a93-02cfae01036b ALIVE 16
uuid:22314754-a597-490b-8a93-02cfae01036b BYEBYE 8
uuid:22314754-a597-490b-8a93-02cfae01036b SEARCH 8
uuid:50e65653-7525-485d-83bf-d293558c4264 ALIVE 32
uuid:50e65653-7525-485d-83bf-d293558c4264 BYEBYE 8
uuid:50e65653-7525-485d-83bf-d293558c4264 SEARCH 132
uuid:55076f6e-6b79-4d65-6497-180373763bc1 ALIVE 113
uuid:55076f6e-6b79-4d65-6497-180373763bc1 BYEBYE 112
uuid:55076f6e-6b79-4d65-6497-180373763bc1 SEARCH 111
uuid:T0100203354 ALIVE 1
uuid:T0100203354 BYEBYE 2
uuid:T0100203354 SEARCH 3

My code :

#include<stdio.h>
#include<string.h>
struct uid
{

char uid_val[100];
char state[100];
int temp_count;
int alive_count;
int search_count;
int bye_count;

}UID[100];



int main()
{

char str[100];
int i = 0;

int line = 0;

char temp_val[100] = "waseem";

FILE *fp1 = fopen("input.txt","r");
FILE *fp2=fopen("output.txt","w");


printf("init value is %s \n",temp_val);
while(!feof(fp1))
{

        fscanf(fp1,"%s %s %d",UID[i].uid_val,UID[i].state,&UID[i].temp_count);

        int ret = 0;
        ret=strcmp(UID[i].uid_val,temp_val);
        if (ret!=0)

        {
               printf("new UID_val is %s\n",UID[i].uid_val);
//              i++;
        }
        else
        {

        }

        temp_val[0] = '\0';

        strcpy(temp_val,UID[i].uid_val);
//      printf("value is %s and %s and ret is %d\n",temp_val,UID[i].uid_val,ret);

        if(strcmp(UID[i].state,"ALIVE")==0)
        {
                UID[i].alive_count = UID[i].temp_count;
        }
        else if(strcmp(UID[i].state,"BYEBYE")==0)
        {
                UID[i].search_count = UID[i].temp_count;
        }
        else
        {
                UID[i].bye_count = UID[i].temp_count;
        }

        //printf("UID is %s  State is %s  Count is %d\n",UID[i].uid_val,UID[i].state,UID[i].alive_count);
        line++;

        if(line%3 == 0)
        {
                i++;
        }
}

//printf("value of is %d and lines is %d\n",i,line);
int n = 0;
//fp2=fopen("output.txt","w");

if (fp2==NULL)
  {
printf("cant output to file\n");
}
else

{
fprintf(fp2,"Device ID\t\t\t\t\tALIVE\tBYEBYE\tSEARCH\n");
  for(n = 0;n < i;n++)
        {
fprintf(fp2,"%s\t%d\t%d\t%d\n",UID[n].uid_val,UID[n].alive_count,UID[n].search_count,UID[n].bye_count);
}


}

//      for(n = 0;n < i;n++)
        {
//              printf("%s    %d %d  %d\n",UID[n].uid_val,UID[n].alive_count,UID[n].search_count,UID[n].bye_count);

//      }

        fclose(fp1);
        fclose (fp2);

        return 0;
}}




Gives the following output :(output.txt)

Device ID ALIVE BYEBYE SEARCH
uuid:22314754-a597-490b-8a93-02cfae01036b 16 8 8
uuid:50e65653-7525-485d-83bf-d293558c4264 32 8 132
uuid:55076f6e-6b79-4d65-6497-180373763bc1 113 112 111
uuid:T0100203354 1 2 3

I want to generalize the code such that uuid occurrence does not have to be all 3 (ALIVE/SEARCH/BYEBYE), the occurrences can be any combination and code should work. e.g my code crashes when input.txt contains the following:

uuid:22314754-a597-490b-8a93-02cfae01036b BYEBYE 8
uuid:22314754-a597-490b-8a93-02cfae01036b SEARCH 8
uuid:50e65653-7525-485d-83bf-d293558c4264 ALIVE 32
uuid:50e65653-7525-485d-83bf-d293558c4264 BYEBYE 8
uuid:55076f6e-6b79-4d65-6497-180373763bc1 ALIVE 113
uuid:55076f6e-6b79-4d65-6497-180373763bc1 BYEBYE 112
uuid:55076f6e-6b79-4d65-6497-180373763bc1 SEARCH 111
uuid:T0100203354 BYEBYE 2

I am using ubuntu for gcc/g+ compiler.

Is This A Good Question/Topic? 0
  • +

Replies To: Need help in File Parsing in C/C++ !

#2 maverickjd  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 3
  • Joined: 11-September 13

Re: Need help in File Parsing in C/C++ !

Posted 12 September 2013 - 10:51 PM

There is a mistake..Code does not crash, but gives wrong results.. apologies..
Was This Post Helpful? 0
  • +
  • -

#3 jimblumberg  Icon User is offline

  • member icon


Reputation: 4098
  • View blog
  • Posts: 12,682
  • Joined: 25-December 09

Re: Need help in File Parsing in C/C++ !

Posted 13 September 2013 - 02:01 AM

What results does you program produce, and what results are you expecting, with the supplied input?
Also here and here, and who knows how many other places.

And since this is a duplicate, Closed.


Jim

This post has been edited by jimblumberg: 13 September 2013 - 02:18 AM

Was This Post Helpful? 1
  • +
  • -

Page 1 of 1