Advertisement
Guest User

Untitled

a guest
Apr 5th, 2020
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 12.17 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <wchar.h>
  4. #include <string.h>
  5.    
  6. #define MAXSIZE 500
  7. #define ROWSIZE 3000
  8.  
  9. typedef struct INFILE
  10. {
  11.   wchar_t personSex [MAXSIZE];
  12.   wchar_t surname [MAXSIZE];  
  13.   wchar_t firstName[MAXSIZE];
  14.   wchar_t personCountry[MAXSIZE];
  15.   wchar_t personAddressDetails[MAXSIZE];
  16.   wchar_t email[MAXSIZE];
  17.   wchar_t personTitle[MAXSIZE];
  18.   wchar_t personRemarks[MAXSIZE];
  19.   wchar_t personCity1[MAXSIZE];
  20.   wchar_t personCountry1[MAXSIZE];
  21.   wchar_t personTelefax[MAXSIZE];
  22.   wchar_t personAddressDetails1[MAXSIZE];
  23.   wchar_t personCity[MAXSIZE];
  24.   wchar_t personAddress[MAXSIZE];
  25.   wchar_t personPhone[MAXSIZE];
  26.   wchar_t personMobilePhone[MAXSIZE];
  27.   wchar_t personDirectPhone[MAXSIZE];
  28.   wchar_t personPostCode1[MAXSIZE];
  29.   wchar_t personPostCode[MAXSIZE];
  30.   wchar_t personLanguage[MAXSIZE];
  31.   wchar_t personAddress1[MAXSIZE];
  32.   wchar_t earlyUpset1[MAXSIZE];
  33.   wchar_t earlyUpset2[MAXSIZE];
  34.   wchar_t earlyUpset3[MAXSIZE];
  35.   wchar_t earlyUpset4[MAXSIZE];
  36.   wchar_t earlyUpset5[MAXSIZE];
  37.   wchar_t earlyUpset6[MAXSIZE];
  38.   wchar_t earlyUpset7[MAXSIZE];
  39.   wchar_t earlyUpset8[MAXSIZE];
  40.   wchar_t earlyUpset9[MAXSIZE];
  41.   wchar_t earlyUpset10[MAXSIZE];
  42.   wchar_t earlyUpset11[MAXSIZE];
  43.   wchar_t earlyUpset12[MAXSIZE];
  44.   wchar_t earlyUpset13[MAXSIZE];
  45.   wchar_t earlyUpset14[MAXSIZE];
  46.   wchar_t earlyUpset15[MAXSIZE];
  47.   wchar_t earlyUpset16[MAXSIZE];
  48.   wchar_t earlyUpset17[MAXSIZE];
  49.   wchar_t earlyUpset18[MAXSIZE];
  50.   wchar_t earlyUpset19[MAXSIZE];
  51.   wchar_t earlyUpset20[MAXSIZE];
  52.   wchar_t earlyUpset21[MAXSIZE];
  53.   wchar_t earlyUpset22[MAXSIZE];
  54.   wchar_t earlyUpset23[MAXSIZE];
  55.   wchar_t earlyUpset24[MAXSIZE];
  56.   wchar_t CustomerID[MAXSIZE];
  57.   wchar_t Result[MAXSIZE];
  58.   wchar_t CallResult[MAXSIZE];
  59.   wchar_t classifier[MAXSIZE];
  60.   wchar_t Amount[MAXSIZE];
  61.   wchar_t callCount[MAXSIZE];
  62.   wchar_t date[MAXSIZE];
  63.   wchar_t agent[MAXSIZE];
  64.   wchar_t agentNumber[MAXSIZE];
  65.  
  66. }input;
  67.  
  68. int fnValidateDate(wchar_t *date);
  69. wchar_t *fnCheckDate();
  70. void fnOutFiles(input *details);
  71. void fnLoad(int startIndex, int endIndex, wchar_t *buffer, int column, input *files);
  72. void fnStart();
  73.  
  74. int main()
  75. {
  76.   fnStart();
  77. }
  78.  
  79. int fnValidateDate(wchar_t *date)
  80. {
  81.   int iCheck = 0;
  82.   int iCounter = 0;
  83.   int result = 0;
  84.   wchar_t *token = wcstok(date,L"-");
  85.   iCheck = _wtoi(token);
  86.   while(token)
  87.   {
  88.       if(iCounter == 1)
  89.       {
  90.           if(iCheck < 1 || iCheck > 12)
  91.           {
  92.             result = 1;
  93.           }
  94.       }
  95.       else if(iCounter == 2)
  96.       {
  97.           if(iCheck < 1 || iCheck > 31)
  98.           {
  99.               result = 1;
  100.           }
  101.       }
  102.       token = wcstok(NULL,L"-");
  103.       iCheck = _wtoi(token);
  104.       iCounter ++;
  105.       //printf("\nCounter: %d, token: %ls, iCheck : %d\n",iCounter,token,iCheck);
  106.   }
  107.   return result;
  108. }
  109.  
  110. wchar_t *fnCheckDate()
  111. {
  112.   wchar_t *Date = malloc(15 * sizeof(wchar_t));
  113.   wchar_t Date2[15];
  114.   printf("Please enter the date:\nFormat YYYY-MM-DD\n");
  115.   wscanf(L"%s",Date);
  116.   wcscpy (Date2,Date);
  117.   if(fnValidateDate(Date2) == 1)
  118.   {
  119.       printf("Invalid date.\n");
  120.       exit(1);
  121.   }
  122.   //printf("\nString 1: %ls\nString 2: %ls\n",Date,Date2);
  123.   return Date;
  124. }
  125.  
  126. void fnOutFiles(input *details)
  127. {
  128.   wchar_t* ptrDate = fnCheckDate();
  129.   wprintf(L"%ls\n",ptrDate);
  130.   wchar_t specifier[15];
  131.   //printf("Please enter your classifier:\n");
  132.   //wscanf(L"%s",specifier);
  133.  
  134.   FILE *Device = fopen("Device.txt","w+");
  135.   FILE *NoDevice = fopen("NoDevice.txt","w+");
  136.   //printf("\nTest 1\n");
  137.   fprintf(Device,"repoffer\treptarrif\trepLCSterm\trepPromo\trepname\treppid\treplkNum\trepbulstat\trepCompany\trepoffAddress\trepDeliveryAddress\treptel\trepcaseID\trepsim\trepprice\trepcredit\trepAdd\trepdiscount\trepnote\trepbilling\trepkmid\trepch_tp_fee\trepdevice_mobile\trepimei_mobile\trepdevice_tablet\trepimei_tablet\trepdevice_stick\trepimei_stick\trepresNum\trepdiscount_type\trepsim_status\trepdevice_accessory\trepaccessory_price\trepexpected_date\trepdata_TP\treplising\trepcontract_number\trepoperation_number\trepin_user\trepdata_relation_id\trepind_yes_to_all\trepsim_needed");
  138.   fprintf(NoDevice,"repoffer\treptariff\trepLCSterm\trepPromo\trepname\treppid\treplkNum\trepbulstat\trepCompany\trepoffAddress\trepDeliveryAddress\treptel\trepcaseID\trepcredit_limit\trepAdd\trepdiscount\trepnote\trepbilling\trepkmid\trepch_tp_fee\trepresNum\trepdiscount_type\trepexpected_date\trepdata_TP\treppilot\trepcontract_number\trepoperation_number\trepin_user\trepcampaign\trepdata_relation_id\trepind_yes_to_all");
  139.   fclose(Device);
  140.   fclose(NoDevice);
  141.   for(int i = 1; i < 30; i++)
  142.   {
  143.       if(wcscmp(ptrDate,details[i].date) == 0)
  144.       {
  145.           wprintf(L"1. %ls\n",ptrDate);
  146.           Device = fopen("Device.txt","a");
  147.           NoDevice=fopen("NoDevice.txt","a");
  148.  
  149.           if(wcscmp(details[i].personTelefax,L"") != 0)
  150.           {
  151.             fwprintf(Device,L"8\t%ls\t2\t1\t%ls\t \t \t \t \t%ls\t%ls\t%ls\t \t \t \t \t%ls\t \t%ls\t%ls\t \t \t%ls\t \t \t \t \t \t%ls\t \t \t \t \t \t \t0\t \t \t%ls\t%ls\t%ls\t0\n",
  152.             details[i].surname,details[i].firstName,details[i].personCountry,details[i].personAddressDetails,details[i].personPhone, details[i].personTitle,
  153.             details[i].personRemarks,details[i].personCity1,details[i],details[i].personTelefax,details[i].personCountry1,details[i].agent,details[i].personSex,details[i].personAddress1);
  154.           }
  155.           else
  156.           {
  157.             fwprintf(NoDevice,L"7\t%ls\t2\t1\t%ls\t \t \t \t \t%ls\t%ls\t%ls\t \t \t%ls\t \t%ls\t%ls\t \t \t%ls\t \t \t \t \t \t \t%ls\t \t%ls\t%ls\n",
  158.             details[i].surname,details[i].firstName,details[i].personCountry,details[i].personAddressDetails,details[i].personPhone,details[i].personTitle,details[i].personRemarks,
  159.             details[i].personCity1,details[i].personCountry1,details[i].agent,details[i].personSex,details[i].personAddress1);
  160.           }
  161.          
  162.       }
  163.       else
  164.       {
  165.           wprintf(L"2. %ls\nwcscmp: %d\ndate: %ls\n",ptrDate,wcscmp(ptrDate,details[i].date), details[i].date);
  166.       }
  167.   }
  168. }
  169.  
  170. void fnLoad(int startIndex, int endIndex, wchar_t *buffer, int column, input *files)
  171. {
  172.    wchar_t temp[MAXSIZE] = {0};
  173.    //printf("\nfnLoad Call\n",column);
  174.    wcsncpy(temp, buffer + startIndex, endIndex - startIndex);
  175.     switch (column)
  176.     {
  177.     case 0:
  178.         wcscpy(files->personSex,temp);
  179.         break;
  180.     case 1:
  181.         wcscpy(files->surname,temp);
  182.         break;
  183.     case 2:
  184.         wcscpy(files->firstName,temp);
  185.         break;
  186.     case 3:
  187.         wcscpy(files->personCountry,temp);
  188.         break;
  189.     case 4:
  190.         wcscpy(files->personAddressDetails,temp);
  191.         break;
  192.     case 5:
  193.        wcscpy(files->email, temp);
  194.         break;
  195.     case 6:
  196.         wcscpy(files->personTitle,temp);
  197.         break;
  198.     case 7:
  199.         wcscpy(files->personRemarks,temp);
  200.         break;
  201.     case 8:
  202.         wcscpy(files->personCity1,temp);
  203.         break;
  204.     case 9:
  205.         wcscpy(files->personCountry1,temp);
  206.         break;
  207.     case 10:
  208.         wcscpy(files->personTelefax,temp);
  209.         break;
  210.     case 11:
  211.         wcscpy(files->personAddressDetails1,temp);
  212.         break;
  213.     case 12:
  214.         wcscpy(files->personCity,temp);
  215.         break;
  216.     case 13:
  217.         wcscpy(files->personAddress,temp);
  218.         break;
  219.     case 14:
  220.         wcscpy(files->personPhone,temp);
  221.         break;
  222.     case 15:
  223.         wcscpy(files->personMobilePhone,temp);
  224.         break;
  225.     case 16:
  226.         wcscpy(files->personDirectPhone ,temp);
  227.         break;
  228.     case 17:
  229.         wcscpy(files->personPostCode1,temp);
  230.         break;
  231.     case 18:
  232.         wcscpy(files->personPostCode,temp);
  233.         break;
  234.     case 19:
  235.         wcscpy(files->personLanguage,temp);
  236.         break;
  237.     case 20:
  238.         wcscpy(files->personAddress1,temp);
  239.         if (wcscmp(files->personAddress1, L"GDPR_Consent"))
  240.         {
  241.          wcscpy(files->personAddress1, L"0");
  242.         }
  243.         else
  244.         {
  245.          wcscpy(files->personAddress1, L"1");
  246.         }
  247.         break;
  248.     case 21:
  249.         wcscpy(files->earlyUpset1,temp);
  250.         break;
  251.     case 22:
  252.         wcscpy(files->earlyUpset2,temp);
  253.         break;
  254.     case 23:
  255.         wcscpy(files->earlyUpset3,temp);
  256.         break;
  257.     case 24:
  258.         wcscpy(files->earlyUpset4,temp);
  259.         break;
  260.     case 25:
  261.        wcscpy(files->earlyUpset5,temp);
  262.         break;
  263.     case 26:
  264.         wcscpy(files->earlyUpset6,temp);
  265.         break;
  266.     case 27:
  267.        wcscpy(files->earlyUpset7,temp);
  268.         break;
  269.     case 28:
  270.         wcscpy(files->earlyUpset8,temp);
  271.         break;
  272.     case 29:
  273.         wcscpy(files->earlyUpset9,temp);
  274.         break;
  275.     case 30:
  276.        wcscpy(files->earlyUpset10,temp);
  277.         break;
  278.     case 31:
  279.         wcscpy(files->earlyUpset11,temp);
  280.         break;
  281.     case 32:
  282.        wcscpy(files->earlyUpset12,temp);
  283.         break;
  284.     case 33:
  285.         wcscpy(files->earlyUpset13,temp);
  286.         break;
  287.     case 34:
  288.        wcscpy(files->earlyUpset14,temp);
  289.         break;
  290.     case 35:
  291.        wcscpy(files->earlyUpset15,temp);
  292.         break;
  293.     case 36:
  294.         wcscpy(files->earlyUpset16,temp);
  295.         break;
  296.     case 37:
  297.         wcscpy(files->earlyUpset17,temp);
  298.         break;
  299.     case 38:
  300.         wcscpy(files->earlyUpset18,temp);
  301.         break;
  302.     case 39:
  303.        wcscpy(files->earlyUpset19,temp);
  304.         break;
  305.     case 40:
  306.         wcscpy(files->earlyUpset20,temp);
  307.         break;
  308.     case 41:
  309.          wcscpy(files->earlyUpset21,temp);
  310.         break;
  311.     case 42:
  312.        wcscpy(files->earlyUpset22,temp);
  313.         break;
  314.     case 43:
  315.        wcscpy(files->earlyUpset23,temp);
  316.         break;
  317.     case 44:
  318.         wcscpy(files->earlyUpset24,temp);
  319.         break;
  320.     case 45:
  321.         wcscpy(files->CustomerID,temp);
  322.         break;
  323.     case 46:
  324.         wcscpy(files->Result, temp);
  325.         break;
  326.     case 47:
  327.         wcscpy(files->CallResult, temp);
  328.         break;
  329.     case 48:
  330.         wcscpy(files->classifier, temp);
  331.         break;
  332.     case 49:
  333.         wcscpy(files->Amount, temp);
  334.         break;
  335.     case 50:
  336.         wcscpy(files->callCount, temp);
  337.         break;
  338.     case 51:
  339.         //wcscpy(files->date, temp);
  340.         for(int i = 0; i < 10; i ++)
  341.         {
  342.           *files->date = temp[0];
  343.           *(files->date + 1) = temp[1];
  344.           *(files->date + 2) = temp[2];
  345.           *(files->date + 3) = temp[3];
  346.           *(files->date + 4) = temp[4];
  347.           *(files->date + 5) = temp[5];
  348.           *(files->date + 6) = temp[6];
  349.           *(files->date + 7) = temp[7];
  350.           *(files->date + 8) = temp[8];
  351.           *(files->date + 9) = temp[9];
  352.         }
  353.         break;
  354.     case 52:
  355.         wcscpy(files->agent, temp);
  356.         break;
  357.     case 53:
  358.         wcscpy(files->agentNumber , temp);
  359.         break;                                                                    
  360.     default:
  361.         break;
  362.     }
  363.    fwprintf(stdout,L"%s\n",temp);
  364. }
  365.  
  366. void fnStart()
  367. {
  368.   input files[30] = {0};
  369.  
  370.   char file_name[25] = {0};
  371.   printf("\nEnter file name :");
  372.   scanf("%s", file_name);
  373.  
  374.   FILE *outfile = fopen("teamTXT.txt","w");
  375.   FILE *infile = fopen(file_name,"r");
  376.   //FILE *noPhone = NULL;
  377.   //FILE *Phone = NULL;
  378.  
  379.   int structCount = 0;
  380.   int column = 0;
  381.  
  382.   if (infile == NULL)
  383.   {
  384.     printf("Error opening the file.\n");
  385.     exit(1);
  386.   }
  387.   else
  388.   {
  389.     while (!feof(infile))
  390.     {
  391.       wchar_t buffer[ROWSIZE] = {0};
  392.       int currPos = 0;
  393.       int startPos = 0;
  394.  
  395.       if (fgetws(buffer,ROWSIZE,infile))
  396.       {
  397.       //wprintf(L"%ls\n\n\n",buffer);
  398.         while(buffer[currPos] != '\0')
  399.         {
  400.         //fwprintf(outfile,buffer);
  401.           if (buffer[currPos] == '\t')
  402.           {
  403.             fnLoad(startPos, currPos ,buffer, column, &(files[structCount]));
  404.             column ++;
  405.             //printf("\nColumn count: %d",column);
  406.             //printf(" Struct count: %d\n",structCount);
  407.             startPos = currPos + 1;
  408.           }
  409.           currPos++;
  410.         }
  411.         structCount++;
  412.         column = 0;
  413.         memset(buffer, 0, sizeof(buffer));
  414.       }
  415.        //printf("\nFinal struct count: %d",structCount);
  416.     }
  417.   }
  418.   fnOutFiles(files);
  419.   fclose(infile);
  420.   fclose(outfile);
  421. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement