Advertisement
Guest User

Untitled

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