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;
English