Je suis un peu confus à propos de quelque chose. J'avais l'impression que la manière correcte de lire une chaîne de caractères C avec scanf()
est allé dans le sens de
(ne tenez pas compte du possible dépassement de tampon, c'est juste un exemple simple)
char string[256];
scanf( "%s" , string );
Cependant, la méthode suivante semble également fonctionner,
scanf( "%s" , &string );
Est-ce que c'est juste mon compilateur (gcc), de la chance, ou autre chose ?
0 votes
Dans le second cas, il n'y a pas de dépassement de tampon possible, puisque vous n'utilisez pas du tout ce tampon. Ou alors, on peut dire que toute chaîne de plus de 3 caractères fera déborder votre "tampon".
0 votes
Je faisais référence au premier exemple. De plus, d'autres ont déjà souligné ce qui se passe ici.
0 votes
Yup. Je l'ai essayé, et Gareth a raison. Bizarre.
0 votes
Puisque cette question est renvoyée par des recherches sur "comment lire une chaîne de caractères avec scanf", il peut être approprié de préciser que cette question porte sur les moyens de transmettre le pointeur du tampon à
scanf
La question et la réponse acceptée se concentrent sur ce point, et omettent l'élément d'une importance capitale des restrictions concernant la longueur maximale des entrées qui devraient être utilisées dans le code réel (mais qui sont hors sujet pour cette question).