Code:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void getprograminfo(char *, char *, char *);
char * getline(FILE *);
int main(int argc, char *argv[])
{
FILE *fp;
int channels;
char channelname[20];
char *line;
char linep[100];
int i,a,len;
char time[50];
char program[50];
char line1[1024];
char line2[2000];
char *temp;
int tlen,plen,first;
if (argc < 2)
{
printf(" USAGE: %s <filename>\n",argv[0]);
exit(0);
}
if ((fp=fopen(argv[1],"r")) == NULL)
{
printf("can not open the file\n");
exit(0);
}
fscanf(fp,"%d",&channels);
printf("Total Channels: %d\n",channels);
i = 0;
first = 1;
memset(line1,'\0',sizeof(line1));
memset(line2,'\0',sizeof(line2));
while ((fgets(linep,sizeof(linep),fp))!=NULL)
{
memset(channelname,'\0',20);
linep[strlen(linep)-1]= '\0';
if ((line=strstr(linep,"=")) != NULL)
{
if (!first)
{
printf("%s\n%s\n",line1,line2);
if (strlen(line1) > strlen(line2))
{
len = strlen(line1);
} else {
len = strlen(line2);
}
for (a=0;a<len;a++)
{
printf("-");
}
printf("\n");
memset(line1,'\0',sizeof(line1));
memset(line2,'\0',sizeof(line2));
i=0;
}
first = 0;
strcpy(channelname,++line);
printf("channel: %s\n",channelname);
} else {
memset(time,'\0',sizeof(time));
memset(program,'\0',sizeof(program));
getprograminfo(linep,time,program);
//printf("time: %s ",time);
//printf("program: %s\n",program);
if (i == 0)
{
sprintf(line1,"Time\t\t%s",time);
sprintf(line2,"Program\t\t%s",program);
//printf("tlen: %d plen: %d\n",strlen(line1),strlen(line2));
} else {
strcat(line1,"\t ");
strcat(line1,time);
strcat(line2,"\t ");
strcat(line2,program);
//printf("tlen: %d plen: %d\n",strlen(line1),strlen(line2));
}
i++;
}
}
printf("%s\n%s\n",line1,line2);
if (strlen(line1) > strlen(line2))
{
len = strlen(line1);
} else {
len = strlen(line2);
}
for (a=0;a<len;a++)
{
printf("-");
}
printf("\n");
fclose(fp);
return 0;
}
void getprograminfo(char *line, char *time, char *program)
{
int i,j;
char tword[50];
char pword[50];
i=j=0;
while (i<strlen(line))
{
if (line[i] == ' ')
{
tword[j]='\0';
strcpy(time,tword);
i++;
strcpy(program,line+i);
j=0;
return;
} else {
tword[j]=line[i];
i++;
j++;
}
}
}
char * getline(FILE *fp)
{
static char line[100];
char ch;
int i=0;
memset(line,'\0',sizeof(line));
while ((ch=fgetc(fp))!='\n')
{
if (ch == EOF)
{
return NULL;
} else {
line[i]=ch;
i++;
}
}
line[i+1]='\0';
//printf("line length: %d\n",strlen(line));
if (strlen(line) == 1)
{
return NULL;
} else {
return line;
}
}