#include <stdio.h>
#include <string.h>
void read_string(char s[], unsigned int dim);
void invert_escape(char s[], char t[]);
void main()
{
int i, j;
char t[20];
char s[45];
read_string(t, 20);
invert_escape(s, t);
printf("%s", s);
}
void read_string(char s[], unsigned int dim)
{
int c;
unsigned int i;
for (i = 0; i < dim - 1 && (c = getchar()) != EOF; ++i)
{
s[i] = c;
}
s[i] = '\0';
}
void invert_escape(char s[], char t[])
{
int i, j;
for (j = i = 0; i < strlen(t) - 1; i++) {
if (t[i] == '\\') {
if (t[++i] == 't') s[j++] = '\t';
else if (t[++i] == 'n') s[j++] = '\n';
}
else s[j++] = t[i];
}
s[j] = '\0';
}
Ho cambiato la funzione escape al contrario, converte una sequenza di controllo nei caratteri corrispondenti ma funziona solo con \t e non con \n.
Qualcuno sa dirmi perchè?