bonjour,
J'aimerais créé une fonction qui permet de remplacer tous les caractère non imprimable par des espaces dans une chaine de caractère passer en paramètre.
Mais comment savoir si un caractère n'est pas imprimable?
Merci.
bonjour,
J'aimerais créé une fonction qui permet de remplacer tous les caractère non imprimable par des espaces dans une chaine de caractère passer en paramètre.
Mais comment savoir si un caractère n'est pas imprimable?
Merci.
Raymond
Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi
CafuroCafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
e-verbeUn logiciel de conjugaison des verbes de la langue française.
Ma page personnelle sur DVP.
Merci.
J'ai réalisé cette fonction mais ça me met l'erreur suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 int k; for(k=0;k<strlen(chaine);k++) { if(!isprint((int) chaine[k])) { chaine[k]=" "; } }
"1219 C:\Documents and Settings\Administrateur\Bureau\dev c\MEFEQsansbuf_v3.c [Warning] assignment makes integer from pointer without a cast "
pourtant je caste bien ma chaine en int
edit: non c'est bon trouvé
merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 int k; for(k=0;k<strlen(chaine);k++) { if(!isprint((int) chaine[k])) { chaine[k]=' '; } }
chaine[k]=' ' vs chaine[k]=" " (Edit: corrigé depuis)
Et ce n'est pas en int qu'il faut caster mais en unsigned char (qui sera implicitement promu en int), sinon ça ne sert à rien.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Merci.
Comment je pourrais tester si ma fonction fonctionne bien?
comment représenté mon caractère non imprimable?
OK, je l'avais oublié, merci...
Oui, mais ça ne fonctionne pas en C directement. '^X' n'est pas control-X.Une autre notation (pour l'ASCII) est la notation "control-X" ou "CTRL-X" ou "^X" qui designe le caractere de code 64 de moins ou de plus que le code de X (^@ est NUL, ^[ est ESC, ^? est DEL).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 #include <stdio.h> int main (void) { printf ("%d\n", '^C'); /* 3 */ printf ("%d\n", '^['); /* 27 (ESC) */ return 0; }Par contre, on peut faire ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 24131 24155 Process returned 0 (0x0) execution time : 0.014 s Press any key to continue.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #include <stdio.h> /* ASCII */ #define CTRL(a) ((a) & 0x1F) int main (void) { printf ("%d\n", CTRL ('C')); /* 3 */ printf ("%d\n", CTRL ('[') ; /* 27 (ESC) */ return 0; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 3 27 Process returned 0 (0x0) execution time : 0.055 s Press any key to continue.
Partager