Takže:
1) Na tie polia využívaj konštanty tie potom dôsledne používaj
Code:
#define MAX_ZNAKOV 3
2) Nikdy nepoužívaj funkciu gets. Zabudni, že existuje a ak sa ti bude niekedy zdať, že ju potrebuješ tak použi fgets(stdin, pole, MAX_ZNAKOV), ktorá ti umožní kontrolovať počet načítaných znakov.
3) Tu potrebuješ v každom prípade funkciu getchar, tá ale vracia int, nie char. Preto musíš znaky načítavať do typu int.
Code:
int ch;
unsigned char znaky[MAX_ZNAKOV];
// tu vynuluješ v cykle for pole znakov
for(int i=0; i<MAX_ZNAKOV; ++i) {
ch = getchar();
if(ch == EOF || ch == '\n') { break; }
else { znaky[i] = ch; }
}
4) Potom som si všimol, že si používal 10 namiesto '\n'. To nie je dobrý nápad a nebude ti to niekde fungovať. Vždy používaj znakové konštanty.
5) No a chyba potom bude asi na konci v podmienkach
Code:
if(c == 0) { c = 64; }
if ( d == 0 ) { d = 64; }
Hoci je v premenných nula, ktorú si načítal tak ju prepíšeš na padding. Potom aj priradenie c = 64; nie je nič moc. Radšej si zase definuj konštantu a napíš zrozumiteľnejšie c = PADDING_INDEX; alebo niečo také. Budeš si jednoducho musieť pamätať koľko znakov si načítal a podľa toho pridáš padding, pretože aj nula je korektná hodnota znaku.