Bogusław Kempny

sms

×
Autor English
Początek HC-SR04 LCD Kamera fork() sms strfry() GPIO impulsy Klawiatura Brama GPIO PWM SG90 RFID Grafolog RCP Shutdown Temperatura ....











Przekodujemy więc wszystkie polskie znaki z ogonkami na ASCII bez ogonków, jak znajdziemy jakiś inny nielegalny kod, w to miejsce wstawimy spację. Ta konwersja jest strasznie toporna, radzi sobie tylko z polskim alfabetem, ale jest prosta i skuteczna.

Przepiszemy znak po znaku tekst z łańcucha w argv[2] do buf zamieniając krzaczki na ASCII:

       j=0;
       for (i=0; i< strlen(argv[2]); i++)
       {
         znak=argv[2][i];
        if (znak < 0x80)
          {buf[j]=znak; j++;}
        else
         {
          i++;
          znak1=argv[2][i];
          if (znak == 0xc3)
             switch (znak1)
              {
               case (0x93): { znak='O';buf[j]=znak; j++;;
                          break; }// O ogonek
               case (0xb3): { znak='o';buf[j]=znak; j++;;
                          break; }// o ogonek
              }
          if (znak == 0xc4)
             switch (znak1)
              {
               case (0x84): { znak='A';buf[j]=znak; j++;;
                          break; }// A ogonek
               case (0x86): { znak='C';buf[j]=znak; j++;;
                          break; }// C ogonek
               case (0x98): { znak='E';buf[j]=znak; j++;;
                          break; }// E ogonek
               case (0x85): { znak='a';buf[j]=znak; j++;;
                          break; }// a ogonek
               case (0x87): { znak='c';buf[j]=znak; j++;;
                          break; }// c ogonek
               case (0x99): { znak='e';buf[j]=znak; j++;;
                          break; }// e ogonek
              }
          if (znak == 0xc5)
             switch (znak1)
              {
               case (0x81): { znak='L';buf[j]=znak; j++;;
                          break; }// L ogonek
               case (0x83): { znak='N';buf[j]=znak; j++;;
                          break; }// N ogonek
               case (0x9a): { znak='S';buf[j]=znak; j++;;
                          break; }// S ogonek
               case (0xb9): { znak='Z';buf[j]=znak; j++;;
                          break; }// Z kreska
               case (0xbb): { znak='Z';buf[j]=znak; j++;;
                          break; }// Z kropka
               case (0x82): { znak='l';buf[j]=znak; j++;;
                          break; }// l ogonek
               case (0x84): { znak='n';buf[j]=znak; j++;;
                          break; }// n ogonek
               case (0x9b): { znak='s';buf[j]=znak; j++;;
                          break; }// s ogonek
               case (0xba): { znak='z';buf[j]=znak; j++;;
                          break; }// z kreska
               case (0xbc): { znak='z';buf[j]=znak; j++;;
                          break; }// z kropka
              }
          if (znak > 0x7f) {buf[j] = ' '; i--; j++;}  // nieprawidlowy krzaczek 

         }
       }
       buf[j]=0x00;