Bien sur si on utilise des variable on doit utiliser strlen, mais si on utilise des variable et que la calcule de la longueur est important, autant utiliser une struct qui contiens la longueur de la string.
Oui, mais non, strlen ne marche pas sur de l'unicode.
Ensuite, utiliser un struct qui contient la longueur de la string, mais aussi faire gaffe a la tenir a jour. Ce qui devient tres compliqué quand tu travailles dans un langage ou tout le monde s'attends a ce que tu leur donne un char * et ou les effets de bords sont legions.
D'ou l'intérêt de la lib standard qui va plus loin que "t'as des octets pour manipuler tes données, de quoi tu te plains?".
Bref, je pense que dans cette discussion, tu illustres plutôt bien le commentaire "le c, c'est vachement plus compliqué que ce que certains pensent, et ca va plus que 'faut juste apprendre a programmer'".
Parce que dans ce thread, tu nous en a sorti quelques une des pas mal:
pretendre que sizeof permet de calculer la taille d'une chaine de caractère (ca ne marche QUE sur les chaines littérales dans le scope local, on peut pas vraiment dire que ca soit super utile)
ramener ca ensuite a strlen, ce qui soit dit en passant est off by 1 avec la solution précédente, qui va compter le 0円
ne pas remarquer que strlen ne marche pas sorti de l'ascii
passer sous silence le fait que si ton 0円 manque (peut être parce que t'as utilise strlen et oublié de rajouter 1, par exemple), paf le buffer overflow
Pour revenir au sujet initial, entre un std lib "bloated" ou un programme incorrect qui me pête a la gueule parce que je lui ait envoye une chaine de caractères contenant 😊, je vais prendre la std lib bloated.
[^] # Re: Survivor
Posté par groumly . En réponse au journal C, un âge remarquable. Évalué à 5.
Oui, mais non, strlen ne marche pas sur de l'unicode.
Ensuite, utiliser un struct qui contient la longueur de la string, mais aussi faire gaffe a la tenir a jour. Ce qui devient tres compliqué quand tu travailles dans un langage ou tout le monde s'attends a ce que tu leur donne un
char *et ou les effets de bords sont legions.D'ou l'intérêt de la lib standard qui va plus loin que "t'as des octets pour manipuler tes données, de quoi tu te plains?".
Bref, je pense que dans cette discussion, tu illustres plutôt bien le commentaire "le c, c'est vachement plus compliqué que ce que certains pensent, et ca va plus que 'faut juste apprendre a programmer'".
Parce que dans ce thread, tu nous en a sorti quelques une des pas mal:
Pour revenir au sujet initial, entre un std lib "bloated" ou un programme incorrect qui me pête a la gueule parce que je lui ait envoye une chaine de caractères contenant 😊, je vais prendre la std lib bloated.