Mail Archives: djgpp/2006/08/01/01:42:07
one possible error: try fopen with "rt" mode, instead of "r".
alex
alex bodnaru wrote:
> hi,
>
> you are doing right, just not showing all records.
> attached your own code, slightly retouched.
>
> alex
>
> ram DOT ragu AT gmail DOT com wrote:
>
>>hi
>> i can read the records. here the code is..
>>/*finding the difference btween times*/
>>#include <stdio.h>
>>#include<ctype.h>
>>#include<time.h>
>>main()
>>{
>>char buf[1000];
>>char dummy[50],dates[11],times[9];
>>int day,month,year,hour,minute,second,jobid;
>>FILE *ptr;
>>clrscr();;
>>ptr = fopen("read.txt","r");
>>while (feof(ptr) == 0)
>> {
>> fgets(buf, 1000, ptr); /* Read next record */
>> if(isdigit(buf[0]))
>> {
>> sscanf(buf,"%d %s %s %s %s %s
>>%s",&jobid,dummy,dummy,dummy,dummy,dates,times);
>> printf("\n\n\n\n\n\n\n\n %d %s %s",jobid,dates,times);
>> sscanf(dates,"%d/%d/%d",&month,&day,&year);
>> printf("\n\n\n%d %d %d",month,day,year);
>> sscanf(times,"%d:%d:%d",&hour,&minute,&second);
>> printf("\n\n\n %d:%d:%d",hour,minute,second);
>> }
>> /* printf("%s",buf); O/P the record to the screen */
>> }
>> }
>>
>>
>>
>>
>> in this code how can i go to the next records? here i can get only
>>one record.. then here i want to do time difference between two
>>records..
>>alex bodnaru wrote:
>>
>>
>>>hi ram,
>>>
>>>i would open the logfile in text read mode, and fgets each line in a
>>>buffer long enough.
>>>of the lines read, select the ones that contain your data, as i
>>>understand, those that begin with a number:
>>>if (isdigit(buf[0])) { ... }
>>>then scan the line data with sscanf:
>>>int jobid;
>>>char dummy[50], dates[11], times[9];
>>>sscanf(buf, "%d %s %s %s %s %s %s", &jobid, dummy, dummy, dummy, dummy,
>>>dates, times);
>>>please note, thay you may need to set the proper spacing between the
>>>fields in the format string.
>>>now, sscanf again, to get the time integer values:
>>>int day, month, year, hour, minute, second;
>>>sscanf(dates, "%d/%d/%d", &month, &day, &year);
>>>sscanf(times, "%d:%d:%d", &hour, &minute, &second);
>>>now get the system time and do your calculations.
>>>
>>>good luck,
>>>
>>>alex
>>>
>>>
>>>ram DOT ragu AT gmail DOT com wrote:
>>>
>>>
>>>>hi
>>>> i have problem which is simple but im struggling to solve it..below i
>>>>gave one sample of log file which is in text file format.the problem is
>>>>i have to get time in this logfile and deduct the time from system file
>>>>finally i have to bring the answer to standard output.. i got idea of
>>>>reading line from logfile and copy to stdout. but the problem is i
>>>>can't do manipulation(getting time difference) in textfile..some body
>>>>please help me out..
>>>>
>>>>
>>>>logfile:
>>>>---------
>>>>
>>>>jobid time
>>>>------------------------------------------------------------
>>>>
>>>>181 0 ._11CH_CAS render qw 07/23/2005 00:08:44
>>>> 112,113
>>>> Full jobname:
>>>>._11CH_CAS1_q123s001_001_222_T2_ExtVeh02_SHD.ma
>>>>
>>>>
>>>>182 0 ._11CH_CAS render qw 07/23/2005 00:17:43
>>>> 125-131:1
>>>> Full jobname:
>>>>._11CH_CAS1_q123s001_001_222_T1_ExtVeh02_SHD.ma
>>>>183 0 ._11CH_CAS render qw 07/23/2005 00:27:05
>>>> 125
>>>> Full jobname:
>>>>._11CH_CAS1_q123s001_001_222_T2_ExtVeh02_SHD.ma
>>>>184 0 ._11CH_CAS render qw 07/23/2005 01:33:07
>>>> 70-133:1
>>>> Fulljobname:
>>>>._11CH_CAS1_q01s001_001_222_T3_EXTRA_VEHICALS_SHD.ma
>>>>
>>>>
>>>>185 0 ._11CH_CAS render qw 07/23/2005 01:36:57
>>>> 70-133:1
>>>> Full jobname:
>>>>._11CH_CAS1_q123s001_133_185_T3_ExtVeh03_SHD.ma
>>>>
>>>>
>>>>the output in stdout should be like this:
>>>>
>>>>
>>>>jobid timedifference(this is diff between logfiletime and
>>>>systemtime)
>>>>-----------------------------------
>>>>181 1000 minutes
>>>>
>>>>
>>
>>
>>
- Raw text -