10
votes

Définir une chaîne constante contenant du caractère non imprimable en C

Je veux définir une chaîne constante contenant des caractères non imprimables dans C. Pour par exemple - laissez-le dire que j'ai une chaîne xxx

maintenant je veux le définir comme ça < Pré> xxx

Que dois-je écrire à la place de définir une chaîne équivalente à str1 ? >

c

0 commentaires

3 Réponses :


19
votes

Vous pouvez utiliser "\ x01 \ x05 \ x0a \ x15"


5 commentaires

+1, à l'exception du fait que cela aura un supplément, résiliant NULL annexé à elle.


@roe: Mais depuis que l'OP dit qu'il veut une "chaîne" (et non un tableau char ), cela signifie qu'il nécessite un terminateur Nul.


@jamesd; Je sais, d'où le +1, je voulais juste souligner que cela ajoutera un 0-octet supplémentaire à ce sujet, de sorte qu'ils seront probablement équivalents à la plupart des intentions et des objectifs, mais ne seront pas strictement égaux.


Au risque de sonner petit, ma réponse est meilleure à cause de cela. :)


Sonne très petit



2
votes

vous pouvez utiliser:

const char * str2 = "\ x01 \ x05 \ x0a \ x15";

voir séquences d'échappement sur MSDN ( Impossible de trouver un plus neutre link).


0 commentaires

3
votes

Si vous souhaitez utiliser à la fois une chaîne littérale et éviter d'avoir un terminateur supplémentaire (caractère NUL) ajouté, faites-le comme suit:

str is 4 bytes:
0: 01
1: 05
2: 0a
3: 15


2 commentaires

Intéressant. Est-ce dans la norme?


@row: Oui, absolument. Ce n'est pas la même chose en C ++, mais pour C c'est un comportement standard.