Pouvez-vous me dire ce qui ne va pas ? - C - Programmation
Marsh Posté le 16-02-2005 à 16:22:20
la ligne 13 est completement fausse
Marsh Posté le 16-02-2005 à 16:23:32
Code :
|
C'est mieux ?
Marsh Posté le 16-02-2005 à 16:24:28
oui !
Marsh Posté le 16-02-2005 à 16:51:14
# tutu = (char*)malloc(22*sizeof(char));
# tutu = "Salut.Bah.voilà.skoul";
=>=>=>
tutu = strdup("Salut.Bah.voilà.skoul" );
# titi = (char*)malloc(sizeof(tutu));
#
# strcpy(titi, tutu)
=>=>=>=
titi = strdup(tutu);
jsais pas pkoi personne ne l'aime, ste fonction.
Marsh Posté le 16-02-2005 à 16:54:56
ReplyMarsh Posté le 16-02-2005 à 16:58:16
chrisbk a écrit : |
si je te réponds, ça va te paraître évident
SPA STANDARD BORDEL
Marsh Posté le 16-02-2005 à 16:59:07
Mr Mala a écrit : heuuuuuuuuuuuuu |
vas-y compte. et si t'es doué en algèbre, utilise l'opérateur sizeof (et sans parenthèses si possible)
Marsh Posté le 16-02-2005 à 17:00:58
Taz a écrit : "Salut.Bah.voilà.skoul" |
Exemple 1: Taz ne sait pas compter
T'aurais quand même pu tester
>>> len("Salut.Bah.voilà.skoul" ) |
Bouuuh
edit: et si on ajoute \0 on passe à 22, toujours pas 23
>>> len("Salut.Bah.voilà.skoul\0" ) |
Marsh Posté le 16-02-2005 à 17:07:00
Ben avec les " ca fait 23
Autrement sérieusement je trouve 22 en comptant et sizeof("Salut.Bah.voilà.skoul" ) me dit 22 aussi.
Marsh Posté le 16-02-2005 à 17:07:07
et là je te retombe dessus illico
UTF-8 pawa !
les autres codages c'est de la merde
Code :
|
donc trust no one. Utilise sizeof/strlen et pas tes yeux.
Marsh Posté le 16-02-2005 à 17:07:08
ReplyMarsh Posté le 16-02-2005 à 17:12:44
Et tu crois que c'est en UTF-8 ici ?
De toute facon faut utiliser des wchar_t
Marsh Posté le 16-02-2005 à 17:15:12
Taz a écrit : vas-y compte. et si t'es doué en algèbre, utilise l'opérateur sizeof (et sans parenthèses si possible) |
[ finalement ça n'a rien à faire ici ! ]
Marsh Posté le 16-02-2005 à 17:16:19
Mr Mala a écrit : Mais bordel de petite merde prétentieuse !!! JE T'AI AGGRESSE ??? JE M'INTERROGEAIS C'EST TOUT ! ALORS TU ME PARLES SUR UN AUTRE TON QU'A TES PETITS CAMARADES DE JEU ! PUTAIN T'ES INVIVABLE !!! |
PUISQUE CAI CA JE RENTRE CHEZ MA MERE §§
Marsh Posté le 16-02-2005 à 17:16:59
bonne ambiance
Marsh Posté le 16-02-2005 à 17:18:22
Taz a écrit : si je te réponds, ça va te paraître évident |
mais tout le monde s'en bas les burnes des standards, la portabilité c'est un mythe alacon et le type c'est un debutant qui s'en fout surement encore plus que moi (c'est dire)
Marsh Posté le 16-02-2005 à 17:43:08
Tarabiscote a écrit : Et tu crois que c'est en UTF-8 ici ? |
toi tu ne sais pas ce qu'est l'UTF-8
chrisbk a écrit : mais tout le monde s'en bas les burnes des standards, la portabilité c'est un mythe alacon et le type c'est un debutant qui s'en fout surement encore plus que moi |
non spa un mythe à la con, et autant pas se prendre les pieds dans le tapis dès le début. Plus sérieusement, tu prends par exemple un prof de fac, qui connait à peine strlen, alors si tu lui sors un strdup ... déjà il sait pas ce que c'est, et quand il va compilé sur son ouin-ouin, ça pas marcher.
glib pawa
Marsh Posté le 16-02-2005 à 17:44:06
Mr Mala a écrit : [ finalement ça n'a rien à faire ici ! ] |
moi je trouve ça très intéressant comme problème, et c'est même un sacré piège.
Marsh Posté le 16-02-2005 à 17:45:46
il parlait de ce qu'il a édité et qui se trouve dans la quote de krissebaika
Marsh Posté le 16-02-2005 à 17:52:06
Je savait que ca serait mal compris en fait je voulais dire que je préfère utiliser des wchar plutot que l'UTF-8 mais c'est sûr en UTF-8 on fait généralement plus d'éconnomie de caractères.
Marsh Posté le 16-02-2005 à 17:52:25
je comprends ce qui s'est passé ... c'est moi la petite merde prétentieuse ?
Marsh Posté le 16-02-2005 à 17:53:25
Tarabiscote a écrit : Je savait que ca serait mal compris en fait je voulais dire que je préfère utiliser des wchar plutot que l'UTF-8 mais c'est sûr en UTF-8 on fait généralement plus d'éconnomie de caractères. |
le problème, c'est pas les wchar_t ou des char. C'est ce qu'utilise ton éditeur, et comment ton compilateur gère les codages de caractères multi-octets.
Marsh Posté le 16-02-2005 à 18:03:40
Tu veux dire que certains compilateur font de l'UTF-8 avec des wchar_t, je pensait que c'était toujours l'UTF-16 ou 32 qui était utilisé.
Sinon je suis d'accord avec les char.
Marsh Posté le 16-02-2005 à 18:09:49
Taz a écrit : je comprends ce qui s'est passé ... c'est moi la petite merde prétentieuse ? |
ça me semble évident, et même si c'était écrit sous la colère (raison très probable de l'édit) son coup de gueule n'est pas complètement infondé
Marsh Posté le 16-02-2005 à 18:16:45
Taz a écrit : je comprends ce qui s'est passé ... c'est moi la petite merde prétentieuse ? |
Absolument, il semblerait que tu sois un etron qui, en plus d'etre fumant, soit aussi vantard
Marsh Posté le 16-02-2005 à 18:21:40
chrisbk a écrit : Absolument, il semblerait que tu sois un etron qui, en plus d'etre fumant, soit aussi vantard |
et invivable
Marsh Posté le 16-02-2005 à 18:30:13
Masklinn a écrit : ça me semble évident, et même si c'était écrit sous la colère (raison très probable de l'édit) son coup de gueule n'est pas complètement infondé |
+1
Marsh Posté le 16-02-2005 à 18:32:31
Tarabiscote a écrit : Tu veux dire que certains compilateur font de l'UTF-8 avec des wchar_t, je pensait que c'était toujours l'UTF-16 ou 32 qui était utilisé. |
non je veux dire que par exemple la glib/GTK+/GNOME utilise l'UTF-8 partout avec des char, ça marche sans problème. Après pour wchar_t, c'est une histoire de compilateur ET bibliothèque. En C++, c'est actuellement très casse gueule par exemple.
Marsh Posté le 16-02-2005 à 18:34:14
ReplyMarsh Posté le 16-02-2005 à 18:38:20
Taz a écrit : c'est pas ma faute si aujourd'hui les débutants sont des baltringues |
C'était juste une blague reprenant, de même que le génial krissebaika et afin de rendre hommage à ce méconnu génie, les termes originels de Mr Mala
Marsh Posté le 16-02-2005 à 20:53:23
Tarabiscote a écrit : Ben avec les " ca fait 23 |
Normal, sizeof retourne la taille (longueur, + 1 pour le 0)
Marsh Posté le 16-02-2005 à 21:05:19
chrisbk a écrit : mais tout le monde s'en bas les burnes des standards, la portabilité c'est un mythe alacon et le type c'est un debutant qui s'en fout surement encore plus que moi |
Pas d'accord. Le langage C est défini par une norme qui représente le 'socle commun' (pour parler branché!). Il est AMA important, surtout quand on débute, de bien comprendre quel est le domaine commun du langage, et quelles sont les extensions.
D'autre part, la portabilité n'est pas un mythe. Cette bibliothèque est portable, et c'est du concret.
http://mapage.noos.fr/emdel/clib.htm
Elle tourne sur
et probablement d'autres plateformes, moyennant des adaptations minimes dans la poubelle 'sys.h'
Des bibliothèques portables, il en existe pas mal. Les gens qui les écrivement ne s'assoient pas sur les normes... Ils les connaissent, et ils savent comment écrire du code portable...
C'est un métier...
Ceci dit, évidemment, il est parfois utile d'utiliser des extensions, tout ce que je demande, c'est qu'elles servent à écrire la couche d'adaptation et qu'elles ne soient pas saupoudrées n'importe où dans le code applicatif... Ca s'appelle l'abstraction, et c'est une bonne chose...
Marsh Posté le 16-02-2005 à 21:20:59
Il me semble qu'en C99 le fait de prefixer ses fonctions de manière réservée (str*, to*...) -entre autre- amène un "comportement indéfini". Je prend le cas du préfixage de noms de fonction parce qu'il est très piègeux. Ca veut dire quoi concrétement "comportement indéfini"?
Marsh Posté le 16-02-2005 à 22:24:27
manatane a écrit : Il me semble qu'en C99 le fait de prefixer ses fonctions de manière réservée (str*, to*...) -entre autre- amène un "comportement indéfini". |
C'était déjà le cas en C90...
Citation : Je prend le cas du préfixage de noms de fonction parce qu'il est très piègeux. Ca veut dire quoi concrétement "comportement indéfini"? |
Qu'il peut arriver n'importe quoi. C'est un bug grave. La plupart des comportements indéfinis (Undefined Behaviour ou UB) ne sont pas détectable par l'analyse automatique du code. Leur detection reste donc du domaine des experts du C et doit être enseignée très tôt.
Les exemples les plus courants:
... les cas sont innombrables.
Le C n'est pas un langage de débutant en programmation.
Marsh Posté le 16-02-2005 à 22:33:08
En fait j'ai découvert ce truc de préfixage de fonctions il y a peu de temps, j'ignore si c'est un piège connu ou non (il est mentionné dans C unleashed acheté sur votre conseil, mais pas dans Expert C Programming (j'en suis à peu près sur)) à moins que je sois passé à côté.
Marsh Posté le 16-02-2005 à 22:41:35
manatane a écrit : |
'C Unleashed' est vraiment la référence ultime en matière de C 'intelligent'. Sa grande force est d'être un livre collégial écrit par les animateurs infatigables et inestimables de news:comp.lang.c et validée par le 'peer review', et non l'oeuvre solitaire d'un auteur obscur, aussi bon soit-il.
La FAQ de fclc est du même tonneau.
http://www.isty-info.uvsq.fr/~rumeau/fclc/
Marsh Posté le 16-02-2005 à 22:57:55
Il est excellent en effet, de part les qualités que vous avez énumérez et par la richesse des thèmes abordés (optimisation, algorithmes, speech processing, simulation...). Il est passionnant. C'est probablement le bouquin technique le mieux foutu que j'ai lu (bon en fait je l'ai pas encore fini). Dans une moindre mesure, les bouquins de Stevens sont aussi très bien foutus mais centrés sur Unix et pas très respectueux des standards (bien que Advanced Unix programming permet de mieux les comprendre), exit(0); direct en fin de main par exemple
Marsh Posté le 16-02-2005 à 16:19:49
Lors de l'exécution, j'obtiens le message :
Ceci lors du premier rebouclage de la boucle While...
Je ne comprends pas pourquoi
Visiblement il plante au premier malloc
Merci pour votre aide
Froozen.