Esc è un flag che ti indica che il carattere precedente era un \ e quindi deve essere controllato il successivo per capire se è \ n t per assegnare il corretto carattere al vettore.
Tuttavia
andrebbe perfezionato ancora per altri casi ... ma non è questo il fatto fondamentale ... è per farti ragionare.
Ci hai messo tanto per fare quel codice?
Ovviamente non hai compreso che lavoro con il C da 35 anni ... è un codice banale da 2 minuti ... (ovviamente è così anche per quelli che ti rispondono, basta aver studiato il C e avere l'esperienza di base per ottenere del codice simile, non sono necessari anni). Nello stesso capitolo IF-ELSE avresti dovuto affrontare anche l'operatore ternario e allora quel codice poteva diventare
unsigned int i, j, esc=0;
for (j = i = 0; i < strlen(t); i++) {
switch (t[i])
{
case '\\':
esc += (esc) ? s[j++] = '\\', -1 : 1;
break;
case 't':
s[j++] = (esc) ? esc--, '\t' : 't';
break;
case 'n':
s[j++] = (esc) ? esc--, '\n' : 'n';
break;
default:
s[j++] = t[i];
break;
}
}
s[j] = '\0';
Nota anche
i < strlen(t)
e non
i < strlen(t) - 1
che penso ti venga suggerito da giorni ...