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;