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); }
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); }