Advertisement
Guest User

version

a guest
Apr 4th, 2020
276
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 13.47 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <wchar.h>
  3. #include <stdlib.h>
  4. #include <locale.h>
  5. #include <string.h>
  6. #define FIELDLENGTH 500
  7. #define ROWLENGTH 5000
  8.  
  9. void dateInput();// todo User input and validation for date
  10. void classifierInput();//todo Classifier filter.
  11. void toCSV();//todo Take list of structs and output the correct ones to file
  12. /*void filterStruct(* NewStruct);*/
  13.  
  14. // make tokenization of the date so it can be verified correctly (by " ");
  15.  
  16. // TODO :output check for UTF format
  17.  
  18. typedef struct Input
  19. {
  20.     wchar_t Sex[FIELDLENGTH];
  21.     wchar_t Surname[FIELDLENGTH];                                      
  22.     wchar_t FirstName[FIELDLENGTH];
  23.     wchar_t Country[FIELDLENGTH];
  24.     wchar_t AdressDetail[FIELDLENGTH];
  25.     wchar_t Email[FIELDLENGTH];                                        
  26.     wchar_t Title[FIELDLENGTH];            
  27.     wchar_t Remarks[FIELDLENGTH];
  28.     wchar_t City1[FIELDLENGTH];
  29.     wchar_t Country1[FIELDLENGTH];
  30.     wchar_t Telefax[FIELDLENGTH];
  31.     wchar_t AddressDetails1[FIELDLENGTH];                              
  32.     wchar_t City[FIELDLENGTH];                                            
  33.     wchar_t Address[FIELDLENGTH];                                      
  34.     wchar_t Phone[FIELDLENGTH];
  35.     wchar_t MobPhone[FIELDLENGTH];                                  
  36.     wchar_t DirPhone[FIELDLENGTH];                                      
  37.     wchar_t PostCode1[FIELDLENGTH];                                        
  38.     wchar_t PostCode[FIELDLENGTH];                                      
  39.     wchar_t Language[FIELDLENGTH];                                        
  40.     wchar_t Address1[FIELDLENGTH];
  41.     wchar_t emtptyField1[FIELDLENGTH];
  42.     wchar_t emtptyField2[FIELDLENGTH];
  43.     wchar_t emtptyField3[FIELDLENGTH];
  44.     wchar_t emtptyField4[FIELDLENGTH];
  45.     wchar_t emtptyField5[FIELDLENGTH];
  46.     wchar_t emtptyField6[FIELDLENGTH];
  47.     wchar_t emtptyField7[FIELDLENGTH];
  48.     wchar_t emtptyField8[FIELDLENGTH];
  49.     wchar_t emtptyField9[FIELDLENGTH];
  50.     wchar_t emtptyField10[FIELDLENGTH];
  51.     wchar_t emtptyField11[FIELDLENGTH];
  52.     wchar_t emtptyField12[FIELDLENGTH];
  53.     wchar_t emtptyField13[FIELDLENGTH];
  54.     wchar_t emtptyField14[FIELDLENGTH];
  55.     wchar_t emtptyField15[FIELDLENGTH];
  56.     wchar_t emtptyField16[FIELDLENGTH];
  57.     wchar_t emtptyField17[FIELDLENGTH];
  58.     wchar_t emtptyField18[FIELDLENGTH];
  59.     wchar_t emtptyField19[FIELDLENGTH];
  60.     wchar_t emtptyField20[FIELDLENGTH];
  61.     wchar_t emtptyField21[FIELDLENGTH];
  62.     wchar_t emtptyField22[FIELDLENGTH];
  63.     wchar_t emtptyField23[FIELDLENGTH];
  64.     wchar_t emtptyField24[FIELDLENGTH];
  65.     wchar_t Cust_ID[FIELDLENGTH];
  66.     wchar_t Result[FIELDLENGTH];
  67.     wchar_t CallResult[FIELDLENGTH];
  68.     wchar_t Classifier[FIELDLENGTH];
  69.     wchar_t Amount[FIELDLENGTH];                                        
  70.     wchar_t callCount[FIELDLENGTH];                                    
  71.     wchar_t Date[FIELDLENGTH];                                        
  72.     wchar_t Agent[FIELDLENGTH];                                    
  73.     wchar_t AgentNumber[FIELDLENGTH];
  74.  
  75. }Input;
  76.  
  77. typedef struct OutputStruct
  78. {
  79.     wchar_t reptariff[FIELDLENGTH];                             // = Surname
  80.     wchar_t repname[FIELDLENGTH];                               // = FirstName
  81.     wchar_t repoffAddress[FIELDLENGTH];                         // = Country
  82.     wchar_t repDeliveryAddress[FIELDLENGTH];                    // = AdressDetail
  83.     wchar_t reptel[FIELDLENGTH];                                // = Email ->if empty = Phone-> if there is "!" before phone number = MobPhone
  84.     wchar_t repAdd[FIELDLENGTH];                                // = Title
  85.     wchar_t repnote[FIELDLENGTH];                               // = Remarks
  86.     wchar_t repbilling[FIELDLENGTH];                            // = first number of City1
  87.     wchar_t represNum[FIELDLENGTH];                             // = Person.Country1
  88.     wchar_t repin_user[FIELDLENGTH];                            // = Agent
  89.     wchar_t repdata_relation_id[FIELDLENGTH];                   // = Sex
  90.     wchar_t repind_yes_to_all[FIELDLENGTH];                     // = if Adress1("GDPR_Consent") = 0  else = 1
  91.     wchar_t repdevice_mobile[FIELDLENGTH];                      // = Telefax
  92.     wchar_t date[FIELDLENGTH];
  93.     wchar_t classifier[FIELDLENGTH];
  94.  
  95. }OutputStruct;
  96.  
  97. void fnPopulateInitialStruct (int indexEnd,int indexStart,wchar_t *buffer,int column, Input *myStruct){
  98.  
  99. wchar_t temp[FIELDLENGTH] = {0};
  100. wcsncpy(temp, buffer + indexStart, indexEnd - indexStart);
  101.     switch (column)
  102.     {
  103.     case 0:
  104.         wcscpy(myStruct->Sex,temp);//wprintf(L"%ls",myStruct.Sex);
  105.         // wcscpy(finalStruct->repdata_relation_id,myStruct->Sex);
  106.         break;
  107.     case 1:
  108.         wcscpy(myStruct->Surname,temp); //wprintf(L"%ls",myStruct.Surename);
  109.         // wcscpy(finalStruct->reptariff,myStruct->Surname);
  110.         break;
  111.     case 2:
  112.         wcscpy(myStruct->FirstName,temp); //wprintf(L"%ls",myStruct.FirstName);
  113.         // wcscpy(finalStruct->repname,myStruct->FirstName);
  114.         break;
  115.     case 3:
  116.         wcscpy(myStruct->Country,temp);   //wprintf(L"%ls",myStruct.Country);
  117.         // wcscpy(finalStruct->repoffAddress,myStruct->Country);
  118.         break;
  119.     case 4:
  120.         wcscpy(myStruct->AdressDetail,temp); //wprintf(L"%ls",myStruct.AdressDetail);
  121.         // wcscpy(finalStruct->repDeliveryAddress,myStruct->AdressDetail);
  122.         break;
  123.     case 5:
  124.        wcscpy(myStruct->Email, temp); // wprintf(L"%ls",myStruct.Email);
  125.         break;
  126.     case 6:
  127.         wcscpy(myStruct->Title,temp); //wprintf(L"%ls",myStruct.Title);
  128.         // wcscpy(finalStruct->repAdd,myStruct->Title);
  129.         break;
  130.     case 7:
  131.         wcscpy(myStruct->Remarks,temp);// wprintf(L"%ls",myStruct.Remarks);
  132.         // wcscpy(finalStruct->repnote,myStruct->Remarks);
  133.         break;
  134.     case 8:
  135.         wcscpy(myStruct->City1,temp);// wprintf(L"%ls",myStruct.City1);
  136.         // wcscpy(finalStruct->repbilling,myStruct->City1);
  137.         // wchar_t * token;
  138.         // wchar_t *ptr;
  139.         // wchar_t delimiter[] = L";";
  140.        // token = wcstok(finalStruct->repbilling,token);
  141.         // wcscpy(finalStruct->repbilling,token);
  142.         break;
  143.     case 9:
  144.         wcscpy(myStruct->Country1,temp); //wprintf(L"%ls",myStruct.Country1);
  145.         // wcscpy(finalStruct->represNum,myStruct->Country1);
  146.         break;
  147.     case 10:
  148.         wcscpy(myStruct->Telefax,temp); //wprintf(L"%ls",myStruct.Telefax);
  149.         // wcscpy(finalStruct->repdevice_mobile,myStruct->Telefax);
  150.         break;
  151.     case 11:
  152.         wcscpy(myStruct->AddressDetails1 ,temp); //wprintf(L"%ls",myStruct.AddressDetails1);
  153.         break;
  154.     case 12:
  155.         wcscpy(myStruct->City,temp);  //wprintf(L"%ls",myStruct.City);
  156.         break;
  157.     case 13:
  158.         wcscpy(myStruct->Address,temp); //wprintf(L"%ls",myStruct.Address);
  159.         break;
  160.     case 14:
  161.         wcscpy(myStruct->Phone,temp); //wprintf(L"%ls",myStruct.Phone);
  162.         // wcscpy(finalStruct->reptel,myStruct->Phone);
  163.         break;
  164.     case 15:
  165.         wcscpy(myStruct->MobPhone ,temp); //wprintf(L"%ls",myStruct.MobPhone);
  166.         break;
  167.     case 16:
  168.         wcscpy(myStruct->DirPhone ,temp);// wprintf(L"%ls",myStruct.DirPhone);
  169.         break;
  170.     case 17:
  171.         wcscpy(myStruct->PostCode1 ,temp);// wprintf(L"%ls",myStruct.PostCode1);
  172.         break;
  173.     case 18:
  174.         wcscpy(myStruct->PostCode ,temp);// wprintf(L"%ls",myStruct.PostCode);
  175.         break;
  176.     case 19:
  177.         wcscpy(myStruct->Language ,temp); //wprintf(L"%ls",myStruct.Language);
  178.         break;
  179.     case 20:
  180.         wcscpy(myStruct->Address1 ,temp); //wprintf(L"%ls",myStruct.Address1);
  181.         // wcscpy(finalStruct->repind_yes_to_all,myStruct->Address1);
  182.         // if (wcscmp(finalStruct->repind_yes_to_all, L"GDPR_Consent"))
  183.         // {
  184.         //     wcscpy(finalStruct->repind_yes_to_all, L"0");
  185.         // }
  186.         // else
  187.         // {
  188.         //     wcscpy(finalStruct->repind_yes_to_all, L"1");
  189.         // }
  190.         break;
  191.     case 21:
  192.         wcscpy(myStruct->emtptyField1,temp); //wprintf(L"%ls",myStruct.emtptyField1);
  193.         break;
  194.     case 22:
  195.         wcscpy(myStruct->emtptyField2 ,temp); //wprintf(L"%ls",myStruct.emtptyField2);
  196.         break;
  197.     case 23:
  198.         wcscpy(myStruct->emtptyField3 ,temp); //wprintf(L"%s",myStruct.emtptyField3);
  199.         break;
  200.     case 24:
  201.         wcscpy(myStruct->emtptyField4 ,temp); //wprintf(L"%ls",myStruct.emtptyField4);
  202.         break;
  203.     case 25:
  204.         wcscpy(myStruct->emtptyField5, temp); //wprintf(L"%s",myStruct.emtptyField5);
  205.         break;
  206.     case 26:
  207.         wcscpy(myStruct->emtptyField6, temp); //wprintf(L"%ls",myStruct.emtptyField6);
  208.         break;
  209.     case 27:
  210.         wcscpy(myStruct->emtptyField7 ,temp); //wprintf(L"%ls",myStruct.emtptyField7);
  211.         break;
  212.     case 28:
  213.         wcscpy(myStruct->emtptyField8 ,temp); //wprintf(L"%ls",myStruct.emtptyField8);
  214.         break;
  215.     case 29:
  216.         wcscpy(myStruct->emtptyField9 ,temp);// wprintf(L"%ls",myStruct.emtptyField9);
  217.         break;
  218.     case 30:
  219.         wcscpy(myStruct->emtptyField10 ,temp); //wprintf(L"%ls",myStruct.emtptyField10);
  220.         break;
  221.     case 31:
  222.         wcscpy(myStruct->emtptyField11 ,temp); //wprintf(L"%ls",myStruct.emtptyField11);
  223.         break;
  224.     case 32:
  225.         wcscpy(myStruct->emtptyField12 ,temp); //wprintf(L"%ls",myStruct.emtptyField12);
  226.         break;
  227.     case 33:
  228.         wcscpy(myStruct->emtptyField13 ,temp); //wprintf(L"%ls",myStruct.emtptyField13);
  229.         break;
  230.     case 34:
  231.         wcscpy(myStruct->emtptyField14 ,temp); //wprintf(L"%ls",myStruct.emtptyField14);
  232.         break;
  233.     case 35:
  234.         wcscpy(myStruct->emtptyField15 , temp); //wprintf(L"%ls",myStruct.emtptyField15);
  235.         break;
  236.     case 36:
  237.         wcscpy(myStruct->emtptyField16 , temp); //wprintf(L"%ls",myStruct.emtptyField16);
  238.         break;
  239.     case 37:
  240.         wcscpy(myStruct->emtptyField17 , temp); //wprintf(L"%ls",myStruct.emtptyField17);
  241.         break;
  242.     case 38:
  243.         wcscpy(myStruct->emtptyField18 , temp); //wprintf(L"%ls",myStruct.emtptyField18);
  244.         break;
  245.     case 39:
  246.         wcscpy(myStruct->emtptyField19, temp);// wprintf(L"%ls",myStruct.emtptyField19);
  247.         break;
  248.     case 40:
  249.         wcscpy(myStruct->emtptyField20,temp); //wprintf(L"%ls",myStruct.emtptyField20);
  250.         break;
  251.     case 41:
  252.         wcscpy(myStruct->emtptyField21,temp); //wprintf(L"%ls",myStruct.emtptyField21);
  253.         break;
  254.     case 42:
  255.         wcscpy(myStruct->emtptyField22 , temp);// wprintf(L"%ls",myStruct.emtptyField22);
  256.         break;
  257.     case 43:
  258.         wcscpy(myStruct->emtptyField23 , temp);// wprintf(L"%ls",myStruct.emtptyField23);
  259.         break;
  260.     case 44:
  261.         wcscpy(myStruct->emtptyField24 , temp); //wprintf(L"%ls",myStruct.emtptyField24);
  262.         break;
  263.     case 45:
  264.         wcscpy(myStruct->Cust_ID, temp); //wprintf(L"%ls",myStruct.Cust_ID);
  265.         break;
  266.     case 46:
  267.         wcscpy(myStruct->Result , temp); //wprintf(L"%ls",myStruct.Result);
  268.         break;
  269.     case 47:
  270.         wcscpy(myStruct->CallResult , temp);// wprintf(L"%ls",myStruct.CallResult);
  271.         break;
  272.     case 48:
  273.         wcscpy(myStruct->Classifier , temp); //wprintf(L"%ls",myStruct.Classifier);
  274.         break;
  275.     case 49:
  276.         wcscpy(myStruct->Amount , temp); //wprintf(L"%ls",myStruct.Amount);
  277.         break;
  278.     case 50:
  279.         wcscpy(myStruct->callCount , temp); //wprintf(L"%ls",myStruct.callCount);
  280.         break;
  281.     case 51:
  282.         wcscpy(myStruct->Date , temp);// wprintf(L"%ls",myStruct.Date);
  283.         break;
  284.     case 52:
  285.         wcscpy(myStruct->Agent , temp);// wprintf(L"%ls",myStruct.Agent);
  286.         break;
  287.     case 53:
  288.         wcscpy(myStruct->AgentNumber , temp); //wprintf(L"%ls",myStruct.AgentNumber);
  289.         break;                                                                    
  290.     default:
  291.         break;
  292.     }
  293.     //wprintf(L" ");
  294. }
  295.  
  296. void readIntoStruct(){
  297.  
  298.     Input myInput[30] = {0};
  299.     OutputStruct neededInput[30] = {0};
  300.     FILE *fp;
  301.     fp = fopen("demo1.txt","r");
  302.     int structCounter = 0;
  303.     int iColumnCount = 0;
  304.    
  305.  
  306.     if (fp!=NULL)
  307.     {
  308.         while (!feof(fp))
  309.         {
  310.             wchar_t line[ROWLENGTH] = {0};
  311.             wint_t iCurrentPosition = 0;
  312.             wint_t iStartPosition = 0;
  313.  
  314.            if (fgetws(line,ROWLENGTH,fp))
  315.            {
  316.                // wprintf(L"%ls\n",line);
  317.                 while(line[iCurrentPosition] != '\0')
  318.                {
  319.                    if (line[iCurrentPosition] == '\t')
  320.                     {
  321.                     fnPopulateInitialStruct(iCurrentPosition,iStartPosition,line,iColumnCount,&(myInput[structCounter]));//copy first word to struct
  322.                     iColumnCount++;
  323.                     iStartPosition = iCurrentPosition+1;
  324.                     }
  325.                     iCurrentPosition++;
  326.                    
  327.                 }
  328.                 structCounter++;
  329.                 iColumnCount = 0;
  330.                 memset(line,0,sizeof(line));
  331.             }
  332.            
  333.         }
  334.  
  335.     }
  336.  
  337.    wprintf(L"%ls",myInput[1].FirstName);
  338.    
  339.  
  340. }
  341. int main()
  342. {
  343.     char *locale = setlocale(LC_ALL, "bg_BG.UTF-8");
  344.  
  345.     readIntoStruct();
  346.  
  347.  
  348.     wchar_t string[512];
  349.    
  350.  
  351.     // FILE *in = fopen("in.txt", "r");
  352.     // FILE *out = fopen("out.txt","w");
  353.  
  354.     // if (in != NULL)
  355.     // {
  356.     //     if ( fgetws (string , 512 , in) != NULL )
  357.     //     fclose (in);
  358.     // }
  359.  
  360.     // wprintf(L"I have read: %ls \n",string);
  361.  
  362.     // fputws(string,out);
  363.     // fclose(out);
  364.  
  365.     return 0;
  366. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement