Incrémentation - C - Programmation
Marsh Posté le 07-06-2005 à 13:37:56
programme en perl, c'est plus facile
Code :
|
Marsh Posté le 07-06-2005 à 13:54:14
Merci pour ta réponse Ritzle, mais en réalité j'ai pas trop le choix pour la prog/
Je taffe sur un logiciel de gestion commercial et pour imprimer les étiquettes avec les numéros de série d'article qui se suivent, je dois créer une formule m'affichant la liste de ces numéros de série.
Rien n'étant prévu pour, je me coltine la besogne... dur dur.
Et donc pas le choix. J'ai tenté de faire un strtonum , incrémenter et revenir en numtostr mais évidemment ça ne marche pas.
Le fait que je ne sois pas une lumière de prog, ça n'arrange rien, mdr.
Merci quand même.
Marsh Posté le 07-06-2005 à 20:07:35
ritzle a écrit : programme en perl, c'est plus facile
|
C'est intelligent comme réponse sur un forum C...
T'as voulu étaler ta science, tu n'as fait que te ridiculiser en public...
Marsh Posté le 08-06-2005 à 09:54:35
Emmanuel Delahaye a écrit : C'est intelligent comme réponse sur un forum C... |
Je pense qu'il voulait faire un pointe d'humour.
D'autant plus qu'il a précisé que c'était du PERL.
Apparamment vous n'avez pas le même humour.
Marsh Posté le 08-06-2005 à 09:58:30
Emmanuel Delahaye a écrit : C'est intelligent comme réponse sur un forum C... |
Ce sont les risques du métier...
Marsh Posté le 08-06-2005 à 10:08:26
phnatomass a écrit : Je pense qu'il voulait faire un pointe d'humour. |
+1
Marsh Posté le 09-06-2005 à 02:56:17
Citation :
|
ça marche presque (en 64 bits)
Marsh Posté le 09-06-2005 à 07:53:06
fra0 a écrit :
|
Pourquoi presque ?
Pourquoi 'en 64 bits' ?
Marsh Posté le 09-06-2005 à 08:35:53
bon je vous remercie pour le coeur que vous y avait mis tous et toutes.
Je crois que de toute façon ça n'est même pas du C ... Dur dur.
Enfin bref, merci quand même.
Marsh Posté le 09-06-2005 à 08:44:24
jmy1904 a écrit : bon je vous remercie pour le coeur que vous y avait mis tous et toutes. |
post un bout de code (et arrête d'essayer de modifier un code pompé ci ou là)
Marsh Posté le 09-06-2005 à 09:02:45
exemple de code:
"N° Série : " + ART_SERIED + If(ART_SERIEF=ART_SERIED,"", " / " + ART_SERIEF)
voilà tout .
Merci
Marsh Posté le 09-06-2005 à 09:03:35
en effet, c'est pas du C...
Marsh Posté le 09-06-2005 à 14:54:30
Emmanuel Delahaye a écrit : Pourquoi presque ? |
ok c'est sûr que c'est la bonne méthode,
snprintf est robuste (mais est-il portable ?),
et dans un contexte dynamique, je crains le pire
sur le sizeof buffer.... m'enfin.
Marsh Posté le 09-06-2005 à 15:16:01
non. j'ai déjà donné tout ce qui est utile. Mais explique nous donc pourquoi "dans un contexte dynamique" des fois snprintf pourrait ne pas bien fonctionner ...
Marsh Posté le 09-06-2005 à 15:23:18
Citation : ok c'est sûr que c'est la bonne méthode, |
c'est formidable comme reflexion çà
sinon pour allouer automatiquement la taille du buffer on peut utiliser un truc comme çà
Code :
|
avec un code appelant du genre
Code :
|
Marsh Posté le 09-06-2005 à 15:29:04
parceque le premier argument de snprintf est un pointeur,
Code :
|
Marsh Posté le 09-06-2005 à 15:33:09
ben si tu alloues la mémoire comme un gland forcemment...
Marsh Posté le 09-06-2005 à 15:37:39
t'as bouffé un clown?
Citation : * require: libération de l'espace mémoire alloué dans la fonction |
En ne mettant l'exemple complet, je croies t'avoir surestimé
Marsh Posté le 09-06-2005 à 16:05:07
supaire tu l'as lu ton truc?
Alors il parle des diverses extensions qu'on peut trouver par rapport au C ANSI et comme c'est pas standard ben forcemment çà change .
Ensuite il dit qu'on peut avoir des problèmes sur des Unix datant de matusalem comme SunOS 4.1 qui a 15 ans soit 1 an de plus que l'ANSI C89
Marsh Posté le 09-06-2005 à 16:18:38
# ret = realloc( ret, size );
# if( ret == NULL )
# break;
oh le massacre
Marsh Posté le 09-06-2005 à 16:18:55
fra0 a écrit : parceque le premier argument de snprintf est un pointeur,
|
c'est une blague ce code ?
Marsh Posté le 09-06-2005 à 16:23:54
ReplyMarsh Posté le 09-06-2005 à 19:30:34
le problème ?
moi je vois que ça pédale pas mal dans la choucroute
et que size peut avoir une valeur absolue différente de son cast en size_t ...
et sinon les amis,
snprintf(buffer, 9, "BOO_%04d%c", 9999+1,0);
que contient buffer maintenant ?
et à quoi il devrait être égal si on était un peu consistant ?
/*
char *l=src+n;
assert(n>1);
while(src<l&&(!(n=abs(atol(src)))))++src;
for(++n;n&&--l!=src-1;n/=10)*l=n%10+'0';
*/
Marsh Posté le 09-06-2005 à 20:04:48
c'est à moi que tu poses la question?
si oui ben en fait je sais pas trop comment gérer une telle situation (plus de mémoire utilisable) mais dans le cas de mon bon code vite torché j'ai estimé qu'il n'était pas de l'objet de la fonction de le gérer, je me contenerais donc dans mon cas de libérer l'emplacement allouer préalablement
Code :
|
une autre solution serait peut etre de retenter un realloc moins gourmand et s'il échoue de paramètrer la terminaison avec atexit ??
Enfin bref la gestion de ce genre de situation dépend avant tout de l'appli j'imagine.
Une solution miracle serait la bienvenue c'est quoi selon toi le gros problème?
Marsh Posté le 09-06-2005 à 20:32:47
fra0 a écrit : le problème ? |
c'est pour ça qu'il faut vérifier le retour de snprintf !
et je ne vois pas de cast. c'est toi qui pédale
Marsh Posté le 09-06-2005 à 20:33:24
manatane a écrit :
|
superbe free(NULL) et toujours la même fuite de mémoire.
Marsh Posté le 09-06-2005 à 20:59:11
Citation : superbe free(NULL) et toujours la même fuite de mémoire. |
désolé
-> utiliser une variable supplémentaire
Code :
|
Bon ok j'espere cette fois ne pas avoir fait de connerie, mais c'est pas un peu se faire chier pour rien étant donné que si le système ne peut plus allouer de mémoire au processus ben il est un peu en mauvaise posture... Ce serait quoi ta solution pour qu'il meurre honorablement ?
Marsh Posté le 10-06-2005 à 00:32:35
là il me semble que tu retournes soit NULL, soit un pointer déjà free'é certaines fois.
Marsh Posté le 10-06-2005 à 09:36:50
Encore un topic qui part en live...
Enfin, ça m'a bien fait rire et c'est l'essentiel
Marsh Posté le 10-06-2005 à 15:25:16
oui moi aussi, et finalement j'ai résolu mon truc par une requete SQL potable, mdr.
Merci pour votre acharnement
Marsh Posté le 07-06-2005 à 13:04:30
Bonjour tout le monde.
Pourriez vous me donner l'astuce pour incrémenter une variable alphanumérique?
Exemple , incrémentation de la variable A qui a pour valeur BOB_0001...
Merci