Je cherche à trouver une technique simple qui me permettrait de tester/mettre en valeur l'importance du caractère 0 dans une chaîne de caractères. J'ai essayé quelques exemples mais rien de très flagrant ni de très évident.
Mon but est par la suite de pouvoir toujours vérifier que mes tableaux de caractères comportent bien le caractère \0 pour les délimiter, et je voudrais également pouvoir démontrer que la fonction read() ne renvoie justement pas ce caractère.
Normalement toutes tes strings finissent par un '\0' tu peux donc créer une variable i que tu incrémente jusqua' '\0' pour connaitre la taille de ta string
Je ne suis pas certain de comprendre ce que tu veux prouver.
Comme l'a écrit Croixpizza59, les chaînes sont toujours terminées par un \0 à moins d'avoir généré délibérément un fichier un caractère à la fois et en excluant le \0.
for)i=0; chaine[i] != \0; i++);
la valeur de i sera la longueur de ta chaîne.
Le read() ne lira que ce qui est dans le fichier, sans rien ajouter ou omettre.
Si tu veux te convaincre que c'est important, parcours ta chaîne jusqu'à ce que tu le trouves et remplaces le par autre chose.
ensuite, fais un `printf' avec `%s' et tu verras ce que ça donne.
Le Tout est souvent plus grand que la somme de ses parties.
Il me semble que la fonction read lit tous les caractères qu'on lui dit de lire, y compris le caractère 0 s'il existe dans le fichier lu. Le caractère 0 est très souvent présent dans les fichiers non texte (exemple les .exe).
Le crayon la gomme et le papier sont les meilleurs outils du programmeur !
En C, on considère comme chaine une suite de caractères commençant à une certaine adresse, et se terminant au premier caractère nul qui suit.
La fonction read ne s'occupe pas de chaines de caractères, elle lit (elle essaie de lire) un certain nombre d'octets depuis le dispositif indiqué par un descripteur de fichier. Il peut y avoir des octets nuls, aucun problème.
A comparer avec la table du code ASCII en notation hexadécimale
* 2 3 4 5 6 7
-------------
0: 0 @ P ` p
1: ! 1 A Q a q
2: " 2 B R b r
3: # 3 C S c s
4: $ 4 D T d t
5: % 5 E U e u
6: & 6 F V f v
7: ´ 7 G W g w
8: ( 8 H X h x
9: ) 9 I Y i y
A: * : J Z j z
B: + ; K [ k {
C: , < L \ l |
D: - = M ] m }
E: . > N ^ n ~
F: / ? O _ o SUP
- Edité par michelbillaud 23 octobre 2019 à 11:49:06
Merci à tous pour vous retours, c'est bien plus clair ! :)
Importance du caractère "\0"
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Comprendre, Testez, Rater, Réussir.
Le Tout est souvent plus grand que la somme de ses parties.
Le crayon la gomme et le papier sont les meilleurs outils du programmeur !