コード例 #1
0
int main(int argc, char *argv[])
{
    FILE *fp = NULL;
    My402List *myList = NULL;
    myList = (My402List *)malloc(sizeof(My402List));
    char *dir = argv[2];
    DIR* directory = NULL;
    if(myList == NULL) {
			fprintf(stderr,"Memory allocation for the list failed!");
			PrintErrorMessage();
	}
	(void)My402ListInit(myList);
	if(argc < 2) {
		fprintf(stderr,"Error: Too less arguments\n");
		exit(1);
	} if(argc > 3) {
		fprintf(stderr,"Error: Too many arguments\n");
		exit(1);
	}	
	if(argv[1][0] == '-') {
		fprintf(stderr,"Cannot have \'-\' in the argument\n");
		exit(1);
	}
	if(argc >= 2) {
		if(strcmp(argv[1],"sort") == 0) {
			if(argc == 2) {
				fp = stdin;
				ReadFileInput(fp,myList);
				BubbleSortForwardList(myList);
				PrintList(myList);
				fclose(fp);
			} 
			if(argc == 3) {
				directory = opendir(dir);
				if(directory != NULL)
				{
					closedir(directory);
					fprintf(stderr,"Error: Given path is a directory\n");
					exit(1);
				}    
				fp = fopen(argv[2],"r");
				if(fp==NULL) {
						perror("Error ");
						exit(1);
				} 
				ReadFileInput(fp,myList);
				fclose(fp);
				BubbleSortForwardList(myList);
				PrintList(myList);
			}
		} else {
			fprintf(stderr,"Error: \'sort\' should be the second argument\n");
			exit(1);
		}
	}
	return 0;
}
コード例 #2
0
static
void DoTest()
{
    int num_items=64;
    My402List list, list2;

    memset(&list, 0, sizeof(My402List));
    memset(&list2, 0, sizeof(My402List));
    (void)My402ListInit(&list);
    (void)My402ListInit(&list2);

    CreateTestList(&list, num_items);
    RandomShuffle(&list, num_items);
    FindAllInList(&list, num_items);
    CopyTestList(&list, &list2);

    BubbleSortForwardList(&list, num_items);
    if (gnDebug > 0) PrintTestList(&list, num_items);

    BubbleSortBackwardList(&list2, num_items);
    if (gnDebug > 0) PrintTestList(&list2, num_items);

    CompareTestList(&list, &list2, num_items);

    My402ListUnlinkAll(&list);
    My402ListUnlinkAll(&list2);
}
コード例 #3
0
ファイル: warmup1.c プロジェクト: vbhargavmbis/learning
int main(int argc, char *argv[])
{
		My402List list;
   // My402ListElem *elem=NULL;

    memset(&list, 0, sizeof(My402List));
    (void)My402ListInit(&list);
	
	//Transact t;
	
	
			FILE *fptr;
			//char address[100]="test.tfile";
		char buf[200];
	//printf("ARGC: %d\n",argc);
	if(argc<2)//if sort is missing
	{
		printf("Malformed command\n");
		exit(0);
	}
	if((strcmp(argv[1],"sort")))//if second argument is not 'sort'
	{
		printf("Malformed command\n");
		exit(0);
	}
	if(argc==2)
	{
			fptr=stdin;			
	}
	if(argc==3)
	{		
		if(!strstr(argv[2],".tfile"))
		{
			printf("Could not open file: %s\n",argv[2]);
			printf("Input file either a directory or not in correct format\n");
			exit(0);
		}
		
		fptr=fopen(argv[2], "rt"); 		
	}
    if (fptr==NULL) 
    { //perror("Error:");
       // printf("%s",argv[2]);
        printf("Could not open file: %s!\n",argv[2]); // error in opening file
		printf("%s\n", strerror(errno));
		exit(0);
		//perror("Error:");
        // getch();
        return 1; 
    }
    else
    {
	
		while(fgets(buf, sizeof(buf), fptr) != NULL)
		{
			// if (fgets(buf, sizeof(buf), fptr) == NULL)
		// {
		  // /* end of file */
		  // break;
		// } 
	//else 
	//	{
			//printf("%s",argv[3]);
			//printf("==%s==",buf);
			//printf("COMING TILL HERE!!!\n");
			if(strlen(buf)>1024)
			{
				printf("Invalid input, line is too long\n");
				exit(0);
			}
			long timeint;
			char timec[30];//change size 
			char op;
			//float amt;
			double a=0.0;
			char desc[40];//change size!!!
			//else 
			{
				
				Transact *t;
				t=malloc(sizeof(struct data));
				//printf("BUF: %s\n",buf);
				int i;
				
				char *start_ptr = buf;
				if(!strchr(start_ptr,'\t'))
				{
					printf("Invalid input, not enough info\n");
					exit(0);
				}
				//char *nline_ptr;
				if(strchr(start_ptr,'\r'))
				{
				char *nline_ptr = strchr(start_ptr,'\r');
				*nline_ptr++='\0';
				}
				if(strchr(start_ptr,'\n'))
				{
				char *nline_ptr = strchr(start_ptr,'\n');
				*nline_ptr++='\0';
				}
				char *tab_ptr = strchr(start_ptr, '\t');
				if (tab_ptr != NULL) 
				{
				  *tab_ptr++ = '\0';
				 // printf("%s\t",start_ptr);
				  op=start_ptr[0];
						//printf("OPERATOR= %c\n",op);
						t->op=op;
						if(((op!='+')&&(op!='-')))
						{
							printf("Invalid input with Operator: %c\n",t->op);
							exit(1);
						}
					//	printf("%c\t",t->op);
				}
				for(i=0;i<3;i++)
				{
					start_ptr = tab_ptr;
					// if(!strchr(start_ptr,'\t'))
					// {
						// printf("Invalid input, not enough info2\n");
						// //exit(0);
					// }
						tab_ptr = strchr(start_ptr, '\t');
					//nline_ptr= strchr(start_ptr, '\n');
					
					if ((tab_ptr != NULL)) 
					{
					  *tab_ptr++ = '\0';
					  
					}
					if(i==0)
					{
												
						if(strlen(start_ptr)>=11)
						{
							printf("Invalid input in timestamp: %s\n",start_ptr);
							exit(0);
						}
						if(!((atoi(start_ptr)>0)&&(atoi(start_ptr)<time(NULL))))
						{
							printf("Invalid input in timestamp\n");
							exit(0);
						}
					
						 timeint=atol(start_ptr);
						t->ltime=timeint;
						//printf("--TIME: %lu\t",timeint);
						strcpy(timec,ctime(&timeint));//time is stored in array time
						
					}
					else if(i==1)
					{
						//if(start_ptr[strlen(start_ptr)-3]
					  if(strlen(start_ptr)<4)//min should have one digit before decimal, 2 after and decimal itself
					  {
						printf("Invalid input, not enough digits or decimal\n");
						exit(0);
					  }
					 // if((start_ptr[strlen(start_ptr)-3]!='.')&&(start_ptr[0]=='.'))
					// printf("%c",start_ptr[strlen(start_ptr)-3]);
					  if((start_ptr[strlen(start_ptr)-3]!='.'))
					  {
						printf("Invalid input, does not contain decimal or enough digits after decimal: %s\n",start_ptr);
						exit(0);
					   }
					  if(start_ptr[0]=='.')
					  {
						printf("Invalid input, no digit before decimal\n");
						exit(0);
					  }
						a=atof(start_ptr);
						
						if((a>10000000)||(a<0))
						{
							printf("Invalid input with Amount\n");
							exit(1);
						}
						t->amt=a*100;
						
						
	
						// sprintf(chk, "%0.2f",a);
						// printf("STRING: %s\n",chk);
						// printf("Invalid input, does not contain decimal: %c\n",chk[strlen(chk)-2]);
						// // if(chk[strlen(chk)-3]!='.')
							// // printf("Invalid input, does not contain decimal: %c\n",chk[strlen(chk)-2]);
						
						//printf("AMOUNT: %f--\t",a);
						//printf("%f\t",a);
						//printf("%d\t",t->amt);
					}
					else if(i==2)
					{
						while(isspace(*start_ptr)) 
							start_ptr++;

					    if(*start_ptr == 0)  // All spaces?
						{
							printf("Invalid input..No description\n");
							exit(0);
						}
						if(strlen(start_ptr)>24)
							strncpy(desc,start_ptr,23);
						else
							strcpy(desc,start_ptr);
						
						strcpy(t->desc,desc);
						//t->desc=desc;
						//printf("Description%s",start_ptr);
						//printf("%s\n",t->desc);
					}
				//	printf("%s\t",start_ptr);
				}
				//printf("\n");
				if(checkTime(&list,t->ltime))//1 returned if same exists
				{
					printf("Two same timestamps detected\n");
					exit(0);
				}
				//printf("CTIME:%s",ctime(&time));	
				//printf("Appending\n");
				My402ListAppend(&list,t);
			
			}
		 //}
	  }//while loop
	}
	BubbleSortForwardList(&list,list.num_members);
	PrintTestList(&list,list.num_members);
  
 
    return(0);
}
コード例 #4
0
ファイル: warmup1.c プロジェクト: RupasreeR/Main_repo
int main(int argc,char *argv[])

{

    FILE *fp;

    char line[2000];

    int num_mem;

    My402List list;

    memset(&list, 0, sizeof(My402List));

    (void)My402ListInit(&list); 
    

    if(argc==1)

    {

        printf("malformed command\n");

                exit(EXIT_FAILURE);

    }   



    if(argc==4)

    {

        printf("malformed command\n");

                exit(EXIT_FAILURE);

    }

    if(strlen(line)>1024)
    {
        printf("Length of line is more than 1024\n");
        exit(EXIT_FAILURE);

    }



    if(argc == 3 && (strncmp(argv[1],"sort",strlen(argv[1]))==0))

    {

    fp = fopen(argv[2], "r");

       

    if (fp==NULL)

    {

        fprintf(stderr, "Unable to open '%s'\n",argv[3]);

                exit(EXIT_FAILURE);

    }

    while (fgets(line,2000, fp)!=NULL)

    {
        //printf("%s\n",line);
        parse_line(line, &list);

    } 

     fclose(fp);

    }
    else if(argc == 2 && (strncmp(argv[1],"sort",strlen(argv[1]))==0))

    {

         fp =stdin;

    if (fp==NULL)

        {

        fprintf(stderr, "Unable to open '%s'\n",argv[3]);

                exit(EXIT_FAILURE);

        }

   

    while (fgets(line,2000, fp)!=NULL)

    {

      
         parse_line(line, &list);

               

    }
  fclose(fp);
}
    
else 
  {

    printf("Malformed Command");
    Usage();

  }  

    num_mem=My402ListLength(&list);

     BubbleSortForwardList(&list,num_mem);

   

    printlist(&list);

   

    return 0;

}       
コード例 #5
0
ファイル: warmup1.c プロジェクト: tommy369/OperatingSystem
main( int argc, char *argv[] )
{
      int status;
      char tt;
      unsigned int ti;
      float ff;
      char amt[10];
      char des[100];
      int number = 1024;
      char line[1026];
      My402List *list =(My402List *)malloc(sizeof(My402List));
      printf("start");
      FILE * fp;
      if( argc == 1)
      { 
		fp = stdin;
        if(ferror (fp))
		{
            printf("error opening file!");
            clearerr(fp);
            exit(0);
		} 
      }
      else
	  {
		fp = fopen( "gg.txt" , "r" );
		if(ferror (fp))
		{
            printf("error opening file!");
            clearerr(fp);
            exit(0);
		} 
		else
		{                              
			My402ListElem *elem = (My402ListElem *)malloc(sizeof(My402ListElem));
			status = My402ListInit(list);
			if(status != FALSE)
			{
				while( fgets(line,number,fp) != NULL)
				{         
					sscanf(line,"%c\t%d\t%s\t%[^\n]s",&tt,&ti,amt,des);
					printf("%c\n%d\n%s\n%s\n",tt,ti,amt,des);
					Mytransaction * tr =(Mytransaction*)malloc(sizeof(Mytransaction));
					tr->transtype = tt;
					tr->time      = ti;
					strcpy( tr->amounts , amt );
					strcpy( tr->desc , des );      
					status = Mychecker(list,tr);
					if(status == TRUE)
					{
						status = My402ListPrepend(list,tr);
						if(status != TRUE )
						printf("not prepended");
					}
				} 
            }
            else
            {
                printf("list not initialised");
            }              
		}	
      
      BubbleSortForwardList(list,My402ListLength(list));
      //***output********* 
      printf("\n00000000011111111112222222222333333333344444444445555555555666666666677777777778");
      printf("\n12345678901234567890123456789012345678901234567890123456789012345678901234567890");
      printf("\n+-----------------+--------------------------+----------------+----------------+");
      printf("\n|       Date      | Description              |         Amount |        Balance |");
      printf("\n+-----------------+--------------------------+----------------+----------------+");
      MyListTraverse(list);  
      printf("\n+-----------------+--------------------------+----------------+----------------+");  
      }
}