Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#51 Le 14/04/2010, à 17:54

Elzen

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

samuncle a écrit :

Non personne n'est black listé pour l'instant (sauf lui-même)

Ceci dit, puisqu'on en parle, tu veux bien me blacklister, s'il te plaît ? big_smile

Hors ligne

#52 Le 14/04/2010, à 17:55

grim7reaper

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

@Pylade : Lâche les IDE, surtout pour le C c'est inutile smile, tu gagneras du temps (et des connaissances utiles ainsi qu'un contrôle plus fin sur ton processus de compilation).

Tu utilises quoi comme IDE ?

Dernière modification par grim7reaper (Le 14/04/2010, à 17:55)

Hors ligne

#53 Le 14/04/2010, à 17:59

Pylades

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

grim7reaper a écrit :

@Pylade : Lâche les IDE, surtout pour le C c'est inutile smile, tu gagneras du temps (et des connaissances utiles ainsi qu'un contrôle plus fin sur ton processus de compilation).

Tu utilises quoi comme IDE ?

Je sais, mais je n’ai pas le courage (c’est mal). Mon IDE c’est Code::Blocks (un des moins pires, je crois).


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#54 Le 14/04/2010, à 18:01

grim7reaper

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

J'en sais rien, c'est le seul (donc je peux pas comparer) que j'ai utilisé, quand j'ai débuté, sous Windows (pas taper). Peu de temps après mon passage à GNU/Linux je suis devenu Vim-user.

Dernière modification par grim7reaper (Le 14/04/2010, à 18:02)

Hors ligne

#55 Le 14/04/2010, à 18:20

tshirtman

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

bah, les IDE ont leurs avantages, mais bon  j'en utilise pas non plus, (vim <3) faut juste savoir comment compiler tes projets quoi, ça force à en comprendre un peu plus.... un Makefile pour C c'est pas trop dur, les autotools par contres…

@ilagas: tu peut le voir en web avec browse aussi, pour le blacklist, c'est par ce que je t'ai passé la version qui tourne sur le tdct, samuncle a "forké" pour ce sujet là (je le laisse donc s'en occuper ^^) donc il blacklist les gens qui demandent, comme je fais de l'autre coté…

bon par contre la qualité du code laisse a désirer, désolé pour ceux qui liront, c'est du vieux vieux code de moi… fait par des nuits sans sommeil principalement.

Hors ligne

#56 Le 14/04/2010, à 18:24

grim7reaper

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

Oui un IDE peut même être très utile dans certains langages, mais pour le C je ne vois vraiment pas (surtout avec les plugins que l'on trouve pour Vim ou Emacs, il y a largement de quoi concurrencer les IDE graphique pour le C).

Hors ligne

#57 Le 14/04/2010, à 18:50

Pylades

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

Putain, je débogue et là je suis dans un autre monde… C’est psychédélique… Non ! Je vois des compilateurs tourner autour de moi en riant, c’est normal ? Jamais rien vu de tel… C’est pas un bug c’est une machination ! yikes Laissez-moi deviner : caméra cachée ! big_smile C’est ça, hein ? wink Avouez… Z’êtes pas drôles là. Ou alors c’est l’esprit de RMS qui n’est pas satisfait de moi et qui souhaite se venger ? J’en ai marre ! Si c’est une blague elle n’est pas drôle ! mad Vous me croyez fou ou drogué, hein ? Je vais vous montrer. Tout ceci est strictement irrationnel, je dois rêver, mais j’y vais quand-même.

Mon header de ma bibliothèque (statique) :

#ifndef MAIN_H_INCLUDED
#define MAIN_H_INCLUDED
#include <stdlib.h>
#include <string.h>
struct opt
{
	char active;
	char* short_act;
	char** long_act;
	char* short_unact;
	char** long_unact;
	char takes_value;
	char* value;
};
struct retr
{
    int argsc;
    char** argsv;
    char** errs;
};
int atropt(int,char**,struct opt**,struct retr*);
#endif // MAIN_H_INCLUDED

Ma source de ma bibliothèque (statique) :

#include "main.h"
#include <stdio.h> //debug
int atropt(int argc,char** argv,struct opt** optv,struct retr* ret)
{
    short i=0;
    struct opt* next=NULL;
    short argn;
    for(argn=1;argn<argc;argn++)
    {
        short s_flag=0;
        if(argv[argn][0]=='-')
        {
            if(argv[argn][1]=='\0')
            {
                strcpy(ret->argsv[i++],"-");
                continue;
            }
            if(argv[argn][1]!='-')
            {
                while(argv[argn][++s_flag]!='\0')
                {
                    short optn;
                    for(optn=0;optv[optn]!=NULL;optn++)
                    {
                        short shn;
                        for(shn=0;optv[optn]->short_unact[shn]!='\0';shn++)
                        {
                            printf("unact: %c\n",optv[optn]->short_act[shn]); //debug
                            putc(argv[argn][s_flag],stdout); //debug
                            putc('\n',stdout); //debug
                            if(optv[optn]->short_unact[shn]==argv[argn][s_flag])
                                optv[optn]->active=0;
                        }
                        for(shn=0;optv[optn]->short_act[shn]!='\0';shn++)
                        {
                            printf("act: %c\n",optv[optn]->short_act[shn]); //debug
                            putc(argv[argn][s_flag],stdout); //debug
                            putc('\n',stdout); //debug
                            if(optv[optn]->short_act[shn]==argv[argn][s_flag])
                            {
                                optv[optn]->active=1;
                                if(optv[optn]->takes_value==1)
                                    next=optv[optn];
                            }
                        }
                    }
                }
            }
            else
            {
                // options longues on continue !
            }
        }
        else
        {
            if(next!=NULL)
            {
                next->value=argv[argn];
                next=NULL;
            }
            else
                strcpy(ret->argsv[i++],argv[argn]);
        }
    }
    ret->argsc=i;
    return EXIT_SUCCESS;
}

Mon programme de débug :

#include <stdio.h>
#include <stdlib.h>
#include "../staticlibopt/main.h"

int main(int argc,char** argv)
{
    printf("Hello world!\n");
    struct opt opt1;
    opt1.active=0;
    opt1.short_act="d";
    opt1.takes_value=0;
    struct opt opt2;
    opt2.active=0;
    opt2.short_act="fi";
    opt2.takes_value=0;
    struct opt* optv[3];
    optv[0]=&opt1;
    optv[1]=&opt2;
    optv[2]=NULL;
    struct retr ret1;
    atropt(argc,argv,optv,&ret1);
    if(opt1.active)
        puts("opt1 active!");
    if(opt2.active)
        puts("opt2 active!");
    return 0;
}

Essayez de lancer le programme de débug avec pour unique argument "-dfi"

C’est l’œuvre du démon, ce n’est pas possible autrement !

/me s’éloigne, et va essayer de se rafraîchir les idées.


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#58 Le 14/04/2010, à 19:06

cm-t

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

il manque peut-être
un point-virgule
tongue


Actu Ubuntu            ☺/
Pauses Ubuntu sur Paris            \_< -t
[(π)] La Quadrature du net

Hors ligne

#59 Le 14/04/2010, à 19:23

Pylades

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

cm-t a écrit :

il manque peut-être
un point-virgule
tongue

C’est juste histoire de dire ou il en manque vraiment un ?
Si oui, où, s’il te plaît ?


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#60 Le 14/04/2010, à 19:27

grim7reaper

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

C'est quoi le comportement attendu ?

C'est quoi le résultat bizarre ?

À partir de là, je commencerai les investigations (même si j'ai déjà vu quelques erreurs, peut-être sans rapport sur ce coup-là mais qui apparaîtront tôt ou tard).

Hors ligne

#61 Le 14/04/2010, à 19:44

cm-t

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

Pylade a écrit :
cm-t a écrit :

il manque peut-être
un point-virgule
tongue

C’est juste histoire de dire ou il en manque vraiment un ?
Si oui, où, s’il te plaît ?

j'aurais du mettre plutôt un '؟' au lieu du 'peut-etre' smile
non j'ai pas vérifier, c'était juste pour le délire de la "machination"
désolé si jamais tu viens de passer 30 min à vérifier :s

Dernière modification par cm-t (Le 14/04/2010, à 19:44)


Actu Ubuntu            ☺/
Pauses Ubuntu sur Paris            \_< -t
[(π)] La Quadrature du net

Hors ligne

#62 Le 14/04/2010, à 19:59

Pylades

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

grim7reaper a écrit :

C'est quoi le comportement attendu ?

C'est quoi le résultat bizarre ?

À partir de là, je commencerai les investigations (même si j'ai déjà vu quelques erreurs, peut-être sans rapport sur ce coup-là mais qui apparaîtront tôt ou tard).

o
p
t
1
 
a
c
t
i
v
e
!

Ça c’est de toutes façons inattendu. Ça peut venir d’où ??? Je balance ça sur stdout et ça arrive sur une structure. Incompréhensible. Surtout que je balance ça après avoir appelé ma fonction.
Bref…


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#63 Le 14/04/2010, à 19:59

cm-t

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

:sorry: hmm


Actu Ubuntu            ☺/
Pauses Ubuntu sur Paris            \_< -t
[(π)] La Quadrature du net

Hors ligne

#64 Le 14/04/2010, à 20:05

grim7reaper

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

@Pylade : j'ai ma petite idée là-dessus (mais ça peut-être autre chose).

Je fais ce que j'ai à faire puis je fais des tests pour infirmer ou confirmer et enfin je te tiens au courant wink.
Mais je suis confiant, j'ai connu pire lors des mes missions en tant qu'exorciste de bugs wink.

Hors ligne

#65 Le 14/04/2010, à 20:08

PPdM

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

abonnement

Vous etes gravement malades 3 pages dans la journée !:/


La critique est facile, mais l'art est difficile !
L'humanité étant ce qu'elle est, la liberté ne sera jamais un acquit, mais toujours un droit à défendre !
Pour résoudre un problème commence par poser les bonnes questions, la bonne solution en découlera

Hors ligne

#66 Le 14/04/2010, à 20:25

Pylades

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

grim7reaper a écrit :

@Pylade : j'ai ma petite idée là-dessus (mais ça peut-être autre chose).

Je fais ce que j'ai à faire puis je fais des tests pour infirmer ou confirmer et enfin je te tiens au courant wink.
Mais je suis confiant, j'ai connu pire lors des mes missions en tant qu'exorciste de bugs wink.

Bah moi j’ai jamais vu ça. J’ai déjà eu des trucs un peu bizarre, mais là on marche sur la tête, et en plus, au plafond ou sur les murs…

hmm


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#67 Le 14/04/2010, à 20:33

grim7reaper

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

Bah une sortie normal sans debug ça doit donner quoi (que je vois si je touche au but ou pas) ?
Pour -fdi par exemple ?

Sinon, déjà quelque remarque en vrac :
- tu peux remplacer tout tes "putc('c', stdout);" par "putchar('c');"
- ton code appelant (le debug.c on va dire) n'est pas conforme C89 pour 2 raisons :
        - commentaire à la C++ "//", en C89 seul "/* */" est toléré;
        - des déclarations et du code mélangés, en C89 toute les déclarations en début de bloc puis tu mets du code.
- tu utilises l'affectation "=" pour donner une valeur à short_act. Je t'ai dis qu'on ne mélange pas const et variable donc soit tu déclares ton champ short_act en const char * dans le header, soit tu passes par strcpy (moi le compilo réglé comme il faut gueule pour ça).

Bon, je reprends une dose d'eau bénite (en attendant un exemple type de sortie) et j'y retourne smile

Édit : C'est bon, j'ai fais un headshot avec une balle Gospel (référence au manga Chrno Crusade) dans ton bug, il repose en paix et ton code est maintenant purifié. Les explications arrivent wink.

Dernière modification par grim7reaper (Le 14/04/2010, à 21:10)

Hors ligne

#68 Le 14/04/2010, à 20:47

Ph3nix_

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

cm-t a écrit :

je continue dans ma journée de self-victimisation: je dois optimiser l'affichage pour IE6 neutral

Comme je te comprends:
Pour mon stage en L3 je dois réaliser une appli bancaire utiliser par une plateforme téléphonique:

- BDD: ms sql server 2005 (le MUST d'après mon tuteur: un truc volé chez sybase en réalité)
- serveur web: IIS avec un terminal server qui permet d'administrer le serveur (max 2 connexions)
- système de développement: windows XP pro SP 2 (une grosse daube parmi les daubes: plantage 2 fois par jour)
- Avec un wiki utilisant une base de données TEXTE (le moteur wikipedia utilisant mysql ils n'ont pas voulu installer le serveur)
- environnement de dev: visual studio, ASP.net.. (un langage pourri qui permet de coder avec les pieds et d'exécuter coté serveur ce qui pourrait être exécuté coté client)

Un effort pour les stagiaires tout de même: ils ont installé un serveur PHP (PHP-5.2: le seul truc à jour) et firefox 3.6, on peut donc coder en PHP, javascript même si l'appli doit être compatible IE6 (De meême la base de données est trés bien structurée).

Tout un petit système informatique à 99% Microsoft protégé par des mots de passe bidons (carton,jambon,banane,nuage... bref et avec un mot de passe Administrateur réseau = login administrateur réseau) avec un proxy qui bloque tous les sites (vive les caches google)

Bonnes nouvelles: Je travaille avec des adeptes du libre convaincu (qui chie régulièrement sur MS et ses produits vaseux)

Dernière modification par Ph3nix_ (Le 14/04/2010, à 20:48)


Hiroshima 45 / Chernobyl 86 / Windows '95

Hors ligne

#69 Le 14/04/2010, à 20:56

Pylades

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

@grim7reaper :
Je compile en GNU-C89, et gcc ne gueule pas plus que ça. Pour les commentaire à la C++, je croyais que ça avait été intégré. Franchement, je n’aimerais pas m’en passer, ils me servent à commenter ; alors que les /* */ me servent à retirer une partie du code pour le débug… Pour le reste, si tu insistes, il doit y avoir une raison, je prends donc ça en note
Sinon, je n’aime pas tellement putchar et getchar, c’est personnel. Je sais, c’est ridicule.

Pour -fdi, la sortie normale serait :

Hello world!
opt1 active!
opt2 active!

C’est quoi ce que tu penses être la source de mon bug ?


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#70 Le 14/04/2010, à 21:02

samυncle

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

Bon tentative de faire marcher le robot cool


Hello world

Hors ligne

#71 Le 14/04/2010, à 21:09

oracle_bot

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

Scores totaux, depuis le début:

chart?chs=500x250&cht=p3&chco=ff0000,ff8040,ff0540,ffff00,005555,00ffff,550099,0000ff,800080&chl=10h|11h|12h|13h|14h|15h|17h|18h|19h|20h|21h|22h&chd=t:15,7,7,5,5,3,3,9,4,7,7,1chart?chs=500x250&cht=bvs&chxt=x,y&chl=10h|11h|12h|13h|14h|15h|17h|18h|19h|20h|21h|22h&chd=t:15,7,7,5,5,3,3,9,4,7,7,1


robot multitâche codé par samuncle

Pour la partie compteur utilise le script de tshirtman. Le code source se trouve ici

Hors ligne

#72 Le 14/04/2010, à 21:09

grim7reaper

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

Pour les com à la C++ c'est effectivement intégré, mais en C99.
Pour la gueulante, c'est l'option -Wwrite-strings. Elle n'est pas activée pas -Wall car c'est une nuisance si tu n'est pas strict avec les const dans tes prototypes et déclarations (mais c'est une bonne habitude à prendre que de mettre ce qui ne doit pas être modifié en const (permet des optimisations et améliore les détections d'erreurs) et d'activer cette option pour veiller).

Bon mon intuition était juste cool. Il y a une règle quasi-immuable en C

Un grand sage a écrit :

if(comportement == aleatoire || comportement == mystique)
{
    puts("Forte suspicion de corruption memoire\n");
    puts("Verifiez pointeurs, tableaux et chaines de caracteres ainsi que tout code les manipulant\n");
    puts("Aider vous de GDB et/ou de Valgrind (printf & cie aussi dans une moindre mesure\n");
}

La ligne fautive

for(shn=0;optv[optn]->short_unact[shn]!='\0';shn++)

Tu boucles sur le contenu de short_unact, mais tu ne l'a jamais initialisé mad.
Tu boucles sur un truc carrément indéfinie, donc tu parcours la mémoire allégrement (et l'affiche) jusqu'à rencontrer un byte nul.
Donc, à un moment, tu dois passer dans le segment mémoire .data de ton programme (où sont stockées les variables statiques initialisées, entre autres, comme tes chaînes littérales "opt1 active!" et "opt2 active!") et tu les affiches, voilà donc la source de tes apparitions mystiques.
Tu vois, rien de magique smile, que de la logique (comme toujours en informatique), bien que l'explication nécessite des notions sur la structure d'un exécutable ELF.

Sinon, tant que j'y suis, j'ai cru voir que tu n'as pas bien compris le fonctionnement de strcpy (au vu de l'utilisation que tu en fais).
La fonction strcpy copie une chaîne de caractère là où tu lui dis. Cependant, il est à ta charge d'allouer un espace (via malloc/calloc ou par déclaration préalable, sinon tu risque la SIGSEV) et de taille suffisante (à toi de vérifier ou d'utiliser strncpy, si tu dépasses c'est le buffer overflow tant apprécié des hackers pour faire de zouli exploits big_smile).

Édit : à toutes fins utiles voici ma ligne de compilation traditionnel (et pas parano) pour une compil en mode debug

gcc -g -ansi -pedantic -Wall -Wextra -O0 -Wwrite-strings -Wstrict-prototypes -Wunreachable-code

-Wstrict-prototypes est peut-être superlfu (activé par -pedantic ? -ansi ? -Wall ? -Wextra ?).

Dernière modification par grim7reaper (Le 14/04/2010, à 21:13)

Hors ligne

#73 Le 14/04/2010, à 21:11

Pylades

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

Raté ! big_smile
Il faudrait peut-être le faire passer après 5 heures du mat’, non ?


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#74 Le 14/04/2010, à 21:12

samυncle

Re : ..:: Topic des Codeurs Couche-Tard [0] ::..

Oui je teste le robot pour être sur qu'il marche demain


Hello world

Hors ligne