culture Problème en C

Statut
La discussion n'est pas ouverte à d'autres réponses

low_gamer

Expert
Bonjour à tous et à toutes.

j' ai un petit problème aujourd'hui...
J' ai un exercice en C, qui me demande de faire un logiciel qui copie son entré sur sa sortie (jusque là pas de problème), en remplaçant les tabulations pas \t, les caractères de retour arrière par \b et les backslashs par \\.

Voici le code que j' ai commencé à écrire :

Code:
int c, t, r, b;

t = \t;
r = \b;
b = \\;
                     while ((c = getchar()) != EOF) {
                                 if (c == '\t')
                     printf("%c", t);
                                 if (c == '\b')
                     printf("%c", r);
                                 if (c == '\\')
                      printf("%c", b);
                         putchar(c);
                     }
}
Mon problème est qu'il ne me laisse pas utilisé les anti-slashs pour définir les variables t, r, b (ce serai trop facile sinon)

Si quelqu'un a la solution, n' hésitez pas.
Merci
 
Dernière modification par un modérateur:
Merci beaucoup pour le site, j'irai faire un tour la dessus.

En attendant je laisse le topic ouvert un ou deux jours et si je trouve vraiment pas, je le fermerai.

Encore merci ti louis
 
Salut,

Premièrement, sur ta première ligne tu définis tes variables comme des int, or, à ce que je sache, ce ne sont pas des nombres que tu stockes dedans. Je verrais plutôt un type string.

Ensuite n'oublie pas les quotes pour définir le terme de tes variables.

Enfin, pourquoi ne pas plutôt faire trois petites regex ? Ca te simplifierai grandement la vie... Tiens, voici un petit article bien complet à ce sujet : http://nicolasj.developpez.com/articles/regex/ :icon_wink-221e:

Donc les regex que tu voudrais c'est en détection pour la tabulation un \t et ensuite tu le remplaces, toujours via la regex, par un simple \\t où on échappe l'antislash pour que la tabulation ne soit pas interprétée.
Idem pour le retour arrière avec \b et \\b, et pour le backslash avec \\ et \\\\.

Par contre va falloir faire gaffe à l'ordre des regex pour que le remplacement du backslash ne foute pas la merde dans les remplacement déjà effectués, donc à la limite le faire en premier.
 
Dernière édition:
Salut NEO et merci pour ta réponse bien qu'un peu compliqué encore pour moi.

Le but était de réaliser l' exercice avec les outils de base du C soit : printf, getchar()...

La chose que je ne savais pas, est que comme tu le mentionne, on peux afficher \t en rajoutant un backslash, de cette manière \\t.

Merci de m' avoir bien guidé, problème résolu.
 
Statut
La discussion n'est pas ouverte à d'autres réponses
Retour
Haut