IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

tableau de pointeur & co


Sujet :

C

  1. #1
    Modérateur
    Avatar de Overcrash
    Homme Profil pro
    Architecte Logiciel et responsable CRM (Salesforce)
    Inscrit en
    Mai 2008
    Messages
    1 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte Logiciel et responsable CRM (Salesforce)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 254
    Points : 1 875
    Points
    1 875
    Par défaut tableau de pointeur & co
    Bonsoir a tous ou Bonne nuit ,

    Voila après avoir réussi la récupération des sources depuis mon .dsp ( pour ceux qui me suivent ^^)

    J'ai deux nouvelle problématique sur lequel je sèche , une que je suppose simple mais ça m'énerve de bloqué sur quelque chose qui parait bénin !



    La première :

    J'ai mon code qui a été conçue pour récupérer les sources dans un fichier projet visual donc .dsp , jusque la pas de soucis , sauf que j'aimerai séparé la récupération de . h et de .c, je m'explique et comme un schéma vaut mieux qu'un long discours je cours sur paint :



    J'ai pensé alors a un tableau de pointeur

    Voila le code (qui ne fonctionne pas) surement du au tableau de pointeur mal exploité :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    #include "appli.h"
     
     
    void Receive_Dsp()
    {
     
    	FILE* fichier = NULL;
    	char mot[256];
    	char *motc[256]={""};
    	char *moth[256]={""};
    	int i,k=0,j=0;
     
     
       fichier = fopen(NomFichier,"r" );
       if (fichier == NULL) Fin("erreur du fopen");
     
       while (fscanf(fichier,"%s",mot) != EOF)
       {
    		printf("%s\n", mot);								  // test debug 
    		if(strncmp(mot,"SOURCE=",7)==0)
    		{
    			puts("BINGO voila le mot demander!!!!");          // test debug 
    			getch();
    			j=0;
     
    			for (i=9, j=0 ; mot[i]!= '\0' ; i++,j++)  
    			{
    				strcpy(motc[k], mot+9);     // copy du mot trouver dans un deuxieme buffer!
    				k++;
     
    			}
    			system("CLS");
    			puts(motc[k]);
    			getch();
    		}
       }
     
       fclose(fichier);
    }

    Appli.h

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    /****************************************************************** Mes includes ******/
    #include <stdio.h>
    #include <windows.h>
    #include <conio.h>
    /****************************************************************** Mes structure *****/
     
     
    /****************************************************************** Mes defines *******/
    #define NomFichier "recupsrc.dsp"
    #define NomMakefile "AvoidObstacle.tmk"
     
    /****************************************************************** Mes definitions ***/
    //void lecture(char nomFichier, char fichier);
    void Fin (char *);
    void Receive_Dsp();
    void Write_Tmk();
    Fin.c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include "appli.h"
     
     
    void Fin(char *pMsg)
    {
    	puts(pMsg);
    	getch();
    	exit(0);
    }
    Dans le main il y a juste l'appel de la première fonction.

    Pourquoi tout ça , pourquoi je m'embête autant , et c'est la ou viens ma deuxième problématique !

    Le makefile

    Voici le make , il est dans mon proje de le reprendre a la societé qui me fournit le robot de mon projet,
    Il est certes quelque peut modifier pour que cela soit de 1 plus structuré et de 2 pour mes besoin.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    ####################################################################
    # Makefile for TM V.3.20A
    # COPYRIGHT(C) 1998(1998-2003)
    # RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED
    # AND
    # RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED
    #
    #	Notice	:	Don't edit.
    #	Date	:	2004 11(November) 13(Saturday) PM.05.18
    #	Project	:	AvoidObstacle
    ####################################################################
    
    DELETE	=	@-del
    LNLIST	=	$(PROJECT).cmd
    LMC	=	LMC30
    CC	=	NC30
    AR	=	LB30
    UTL	=	utl30
    AS	=	AS30
    LIBFILE	=	$(PROJECT).lib
    WLIB	=	C:\wany\maeva2004\Oxygen\pekeev1\microcontroler\native\libs               #a modif
    OUTDIR	=	.
    MKDIR	=	@-mkdir
    $(SRCDIR)	=	C:\Pekee\PekeeV1-microcontroler\TurnAround\build-native\src				# a modif 
    WINCLUDE	=	C:\wany\maeva2004\Oxygen\pekeev1\microcontroler\native\includes		# a modif
    ABSFILE	=	$(PROJECT).x30
    ODINCMD	=	$(OUTDIR)
    LN	=	LN30
    TARGET	=	$(ABSFILE)
    ECHO	=	@-echo
    MKFILE	=	$(PROJECT).tmk
    PROJECT	=	AvoidObstacle
    TYPE	=	@-type
    LFLAGS	=	-MS -LD $(WLIB) -L libdriveraccu -L libdriverimpact -L libdrivertemperature -L libdriveropp -L libdriverlight -L libDriverIR -L libdrivermotor -L libdriverserial -L libdriverled -L libdriverbuzzer -L kal -L hal -L $(LIB30)\nc30lib -G -O $(OUTDIR)\$(TARGET)
    UTLFLAGS	=	
    CFLAGS	=	-c -I$(WINCLUDE) -I$(WINCLUDE)\kal0 -dir $(OUTDIR) -finfo
    LMCFLAGS	=	-L
    LIBFLAGS	=	-C
    AFLAGS	=	-LM -finfo -O$(OUTDIR)
    .SUFFIXES: .a30 .r30 .c .x30 .lib
    .PHONY: all
    all: \
    		$(OUTDIR)\$(TARGET) 
    .PHONY: clean
    clean: 
    	$(DELETE) $(OUTDIR)\$(TARGET)
    	$(DELETE) $(ODINCMD)\$(LNLIST)
    	$(DELETE) $(OUTDIR)\ncrt0.r30
    	$(DELETE) $(OUTDIR)\main.r30
    	$(DELETE) $(OUTDIR)\reflex.r30
    	$(DELETE) $(OUTDIR)\wos.r30
    $(ODINCMD)\$(LNLIST): \
    		.\$(MKFILE) 
    	$(ECHO)\$(MRLFLAGS) $(LFLAGS) >	$(ODINCMD)\$(LNLIST)
    	$(ECHO)\$(OUTDIR)\ncrt0.r30 >>	$(ODINCMD)\$(LNLIST)
    	$(ECHO)\$(OUTDIR)\main.r30 >>	$(ODINCMD)\$(LNLIST)
    	$(ECHO)\$(OUTDIR)\reflex.r30 >>	$(ODINCMD)\$(LNLIST)
    	$(ECHO)\$(OUTDIR)\wos.r30 >>	$(ODINCMD)\$(LNLIST)
    $(OUTDIR)\$(TARGET): \
    		$(ODINCMD)\$(LNLIST) \
    		$(OUTDIR)\ncrt0.r30 \
    		$(OUTDIR)\main.r30 \
    		$(OUTDIR)\reflex.r30 \
    		$(OUTDIR)\wos.r30 
    	$(LN) @$(ODINCMD)\$(LNLIST)
    	lmc30 -ID#00000000000000 $(PROJECT) 
    $(OUTDIR)\main.r30: \
    		$(SRCDIR)\main.c \
    		$(SRCDIR)\wos.h \
    		$(SRCDIR)\Reflex.h \
    		$(WINCLUDE)\KAL.h \
    		$(WINCLUDE)\Types.h \
    		$(WINCLUDE)\ErrorCodes.h \
    		$(WINCLUDE)\Hal.h \
    		$(WINCLUDE)\libdriverLED.h \
    		$(WINCLUDE)\libDriverLEDMessages.h \
    		$(WINCLUDE)\DriverCommon.h \
    		$(WINCLUDE)\libdriverSERIAL.h \
    		$(WINCLUDE)\libDriverSerialMessages.h \
    		$(WINCLUDE)\libdriverIR.h \
    		$(WINCLUDE)\libDriverIRMessages.h \
    		$(WINCLUDE)\libdriverMOTOR.h \
    		$(WINCLUDE)\libDriverMOTORMessages.h \
    		$(WINCLUDE)\libdriverOPP.h \
    		$(WINCLUDE)\libDriverOPPMessages.h \
    		$(WINCLUDE)\libdriverIMPACT.h \
    		$(WINCLUDE)\libDriverIMPACTMessages.h \
    		$(WINCLUDE)\libdriverTEMPERATURE.h \
    		$(WINCLUDE)\libDriverTemperatureMessages.h \
    		$(WINCLUDE)\libdriverLIGHT.h \
    		$(WINCLUDE)\libDriverLIGHTMessages.h \
    		$(WINCLUDE)\libdriverBUZZER.h \
    		$(WINCLUDE)\libDriverBUZZERMessages.h \
    		$(WINCLUDE)\libdriverACCU.h \
    		$(WINCLUDE)\libDriverAccuMessages.h 
    	$(CC) $(MRCFLAGS) $(CFLAGS) $(SRCDIR)\main.c
    $(OUTDIR)\ncrt0.r30: \
    		$(WLIB)\ncrt0.a30 \
    		$(WLIB)\sect30.inc 
    	$(AS) $(MRAFLAGS) $(AFLAGS) $(WLIB)\ncrt0.a30
    $(OUTDIR)\reflex.r30: \
    		$(SRCDIR)\reflex.c \
    		$(SRCDIR)\Reflex.h \
    		$(SRCDIR)\wos.h \
    		$(WINCLUDE)\KAL.h \
    		$(WINCLUDE)\Types.h \
    		$(WINCLUDE)\ErrorCodes.h \
    		$(WINCLUDE)\Hal.h \
    		$(WINCLUDE)\libdriverLED.h \
    		$(WINCLUDE)\libDriverLEDMessages.h \
    		$(WINCLUDE)\DriverCommon.h \
    		$(WINCLUDE)\libdriverSERIAL.h \
    		$(WINCLUDE)\libDriverSerialMessages.h \
    		$(WINCLUDE)\libdriverIR.h \
    		$(WINCLUDE)\libDriverIRMessages.h \
    		$(WINCLUDE)\libdriverMOTOR.h \
    		$(WINCLUDE)\libDriverMOTORMessages.h \
    		$(WINCLUDE)\libdriverOPP.h \
    		$(WINCLUDE)\libDriverOPPMessages.h \
    		$(WINCLUDE)\libdriverIMPACT.h \
    		$(WINCLUDE)\libDriverIMPACTMessages.h \
    		$(WINCLUDE)\libdriverTEMPERATURE.h \
    		$(WINCLUDE)\libDriverTemperatureMessages.h \
    		$(WINCLUDE)\libdriverLIGHT.h \
    		$(WINCLUDE)\libDriverLIGHTMessages.h \
    		$(WINCLUDE)\libdriverBUZZER.h \
    		$(WINCLUDE)\libDriverBUZZERMessages.h \
    		$(WINCLUDE)\libdriverACCU.h \
    		$(WINCLUDE)\libDriverAccuMessages.h \
    		$(WINCLUDE)\VirtualDeviceHALBios.h 
    	$(CC) $(MRCFLAGS) $(CFLAGS) $(SRCDIR)\reflex.c
    	#flag1
    	
    $(OUTDIR)\wos.r30: \
    		$(SRCDIR)\wos.c \
    		$(SRCDIR)\wos.h \
    		$(WINCLUDE)\KAL.h \
    		$(WINCLUDE)\Types.h \
    		$(WINCLUDE)\ErrorCodes.h \
    		$(WINCLUDE)\Hal.h \
    		$(WINCLUDE)\libdriverLED.h \
    		$(WINCLUDE)\libDriverLEDMessages.h \
    		$(WINCLUDE)\DriverCommon.h \
    		$(WINCLUDE)\libdriverSERIAL.h \
    		$(WINCLUDE)\libDriverSerialMessages.h \
    		$(WINCLUDE)\libdriverIR.h \
    		$(WINCLUDE)\libDriverIRMessages.h \
    		$(WINCLUDE)\libdriverMOTOR.h \
    		$(WINCLUDE)\libDriverMOTORMessages.h \
    		$(WINCLUDE)\libdriverOPP.h \
    		$(WINCLUDE)\libDriverOPPMessages.h \
    		$(WINCLUDE)\libdriverIMPACT.h \
    		$(WINCLUDE)\libDriverIMPACTMessages.h \
    		$(WINCLUDE)\libdriverTEMPERATURE.h \
    		$(WINCLUDE)\libDriverTemperatureMessages.h \
    		$(WINCLUDE)\libdriverLIGHT.h \
    		$(WINCLUDE)\libDriverLIGHTMessages.h \
    		$(WINCLUDE)\libdriverBUZZER.h \
    		$(WINCLUDE)\libDriverBUZZERMessages.h \
    		$(WINCLUDE)\libdriverACCU.h \
    		$(WINCLUDE)\libDriverAccuMessages.h 
    	$(CC) $(MRCFLAGS) $(CFLAGS) $(SRCDIR)\wos.c
    	#flag2
    ####################################################################
    # End of makefile for TM V.3.20A
    # COPYRIGHT(C) 1998(1998-2003)
    # RENESAS TECHNOLOGY CORPORATION ALL RIGHTS RESERVED
    # AND
    # RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED
    ####################################################################
    Ce que je voudrait faire et de reprendre le bloc rouge et de faire un recopie en dessous , je m'explique,

    Je scan le .dsp , je vois que le monsieur a fait une nouvelle source "toto.c"

    Bas je voudrait rajouter a la suite du makefile le bloc suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    $(OUTDIR)\toto.r30: \
    		$(SRCDIR)\toto.c \
    		$(WINCLUDE)\KAL.h \
    		$(WINCLUDE)\Types.h \
    		$(WINCLUDE)\ErrorCodes.h \
    		$(WINCLUDE)\Hal.h \
    		$(WINCLUDE)\libdriverLED.h \
    		$(WINCLUDE)\libDriverLEDMessages.h \
    		$(WINCLUDE)\DriverCommon.h \
    		$(WINCLUDE)\libdriverSERIAL.h \
    		$(WINCLUDE)\libDriverSerialMessages.h \
    		$(WINCLUDE)\libdriverIR.h \
    		$(WINCLUDE)\libDriverIRMessages.h \
    		$(WINCLUDE)\libdriverMOTOR.h \
    		$(WINCLUDE)\libDriverMOTORMessages.h \
    		$(WINCLUDE)\libdriverOPP.h \
    		$(WINCLUDE)\libDriverOPPMessages.h \
    		$(WINCLUDE)\libdriverIMPACT.h \
    		$(WINCLUDE)\libDriverIMPACTMessages.h \
    		$(WINCLUDE)\libdriverTEMPERATURE.h \
    		$(WINCLUDE)\libDriverTemperatureMessages.h \
    		$(WINCLUDE)\libdriverLIGHT.h \
    		$(WINCLUDE)\libDriverLIGHTMessages.h \
    		$(WINCLUDE)\libdriverBUZZER.h \
    		$(WINCLUDE)\libDriverBUZZERMessages.h \
    		$(WINCLUDE)\libdriverACCU.h \
    		$(WINCLUDE)\libDriverAccuMessages.h \
    		$(WINCLUDE)\VirtualDeviceHALBios.h 
    	$(CC) $(MRCFLAGS) $(CFLAGS) $(SRCDIR)\toto.c
    sauf que dans les dépendance il faut que je rajoute les .h du monsieur, donc dans un premier temps je me prend pas la tête je les mais tous a chaque fois même si la source ne l'inclue pas !
    D'où le faites que je veuille faire deux buffer différent, un pour les .c et un pour les .h .


    Deux questions :
    -Pensez vous que c'est une bonne idée, sinon comment devrais-je m'y prendre ?
    -Si vous avez pas compris je peux essayer de détaillé plus ?

    Je suis preneur de tout conseil !
    Je remercie tout ce qui sont arrivé a ce stade de lecture ^^ , mais comprenez pour moi c'est pas facile de l'expliquer par écrit -_-


    Sur ceux bonne nuit et merci beaucoup de m'aider .
    ---
    Overcrash

    Je ne lis pas les codes qui ne sont pas indentés.
    Merci de les messages utiles en cliquant en bas à droite du message

    Bloqué par le firewall pour accéder au chat ? Essayez avec l'adresse en direct : http://87.98.168.209/

  2. #2
    Modérateur
    Avatar de Overcrash
    Homme Profil pro
    Architecte Logiciel et responsable CRM (Salesforce)
    Inscrit en
    Mai 2008
    Messages
    1 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte Logiciel et responsable CRM (Salesforce)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 254
    Points : 1 875
    Points
    1 875
    Par défaut
    J'ai peut être trouver une solution pour les tableau de pointeur (enfin solution alternative)

    je montre le code ,
    TAILLEMAX =256

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    void Receive_Dsp()
    {
     
    	FILE* fichier = NULL;
    	char mot[TAILLEMAX];
    	char motc[TAILLEMAX][TAILLEMAX];
    	char moth[TAILLEMAX][TAILLEMAX];
    	int i,k=0,j=0;
     
     
       fichier = fopen(NomFichier,"r" );
       if (fichier == NULL) Fin("erreur du fopen");
     
       while (fscanf(fichier,"%s",mot) != EOF)
       {
    		printf("%s\n", mot);								  // test debug 
    		if(strncmp(mot,"SOURCE=",7)==0)
    		{
    			puts("BINGO voila le mot demander!!!!");          // test debug 
    			getch();
    			j=0;
     
    			//for (i=9, j=0 ; mot[i]!= '\0' ; i++,j++)  
    			//{
     
     
     
    				if(strstr(mot,".c") != NULL)
    				{
    					puts("le .c a ete trouver");
    					getch();
     
    					strcpy(motc[k],mot+9);     // copy du mot trouver dans un deuxieme buffer!
    					printf("%s",motc[k]);
    					getch();
    					k++;
    				}
     
    				if(strstr(mot,".h") != NULL)
    				{
    					puts("le .h a ete trouver");
    					getch();
     
    					strcpy(motc[k],mot+9);     // copy du mot trouver dans un deuxieme buffer!
    					printf("%s",motc[k]);
    					getch();
    					k++;
    				}
     
     
     
     
    			//}
    			//puts(motc[k]);
    			//getch();
    			system("CLS");
    		}
       }
     
       fclose(fichier);
    }

    Et la je n'arrive pas a afficher le tableau
    ---
    Overcrash

    Je ne lis pas les codes qui ne sont pas indentés.
    Merci de les messages utiles en cliquant en bas à droite du message

    Bloqué par le firewall pour accéder au chat ? Essayez avec l'adresse en direct : http://87.98.168.209/

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2009
    Messages : 31
    Points : 35
    Points
    35
    Par défaut
    Bonjour,

    Et la je n'arrive pas a afficher le tableau
    Une petite boucle permettra d'afficher le contenu de motc (vu que k contient le nombre d'éléments):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    int z;
    for (z=0; z<k; z++) {
            printf("fichier C %s\n", motc[z]);
    }
    Idem pour le tableau moth modulo cette petite correction dans votre code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    				if(strstr(mot,".h") != NULL)
    				{
    					puts("le .h a ete trouver");
    					getch();
    				
    					strcpy(moth[j],mot+9);     // copy du mot trouver dans un deuxieme buffer!
    					printf("%s",moth[j]);
    					getch();
    					j++;
    				}

  4. #4
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 143
    Points : 169
    Points
    169
    Par défaut
    Je viens d'ouvrir un de mes fichier .DSP et donc j'ai vu le fameux mot clé "SOURCE=" mais par contre :
    Le problème c'est que ce passera t'il si la personne a fait une arborescence de fichier style :

    -REPERTOIRE PROJET
    |---------FICHIER H
    |------------------|-- monproj.h
    |---------FICHIER C
    |------------------|-- monproj.c

    Alors ton mot+9 sera un problème ?!

    Peut-être devrait tu chercher le caractère '\' ou '/' (depends de l'OS me semble t'il) en partant de la fin de ton nom de fichier ? ou à moins que au contraire avoir le chemin total du fichier soif "tout benef" pour toi ?

  5. #5
    Modérateur
    Avatar de Overcrash
    Homme Profil pro
    Architecte Logiciel et responsable CRM (Salesforce)
    Inscrit en
    Mai 2008
    Messages
    1 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte Logiciel et responsable CRM (Salesforce)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 254
    Points : 1 875
    Points
    1 875
    Par défaut
    c'est pas grave ça car c'est un protocole qui sera mis en place plus tard si besoin ,
    actuellement il faut que je puisse affiché le tableau sans que tout ces merde soit dedans , donc je me retourne vers les pointeur mais j'ai du mal.


    [hs] Oui c'est le projet pekee du bts iris a jules ferry versailles , tu tape dans le mille ^^ , et moi je dois m'ocuper du module passerelle ! [/hs]
    ---
    Overcrash

    Je ne lis pas les codes qui ne sont pas indentés.
    Merci de les messages utiles en cliquant en bas à droite du message

    Bloqué par le firewall pour accéder au chat ? Essayez avec l'adresse en direct : http://87.98.168.209/

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Citation Envoyé par Overcrash3181 Voir le message
    bts iris a jules ferry versailles
    Un potache!

    Salue le vieux barbu pour moi!


    Sur le sujet de ton problème, déjà, es-tu obligé de le faire en C ou as-tu le droit au C++?
    En C++, il est très facile de faire un tableau extensible de chaînes de caractères...

    Sinon, si tu veux un tableau extensible de pointeurs, j'ai déjà ceci: http://www.developpez.net/forums/d24...s/#post1582524

    Edit: Aussi, n'oublie pas de rassembler tes infos dans des structures. Un tableau extensible de pointeurs vers des chaînes de caractères, c'est ceci:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    struct ArrayList_string
    {
    	char ** ppStrings;
    	size_t taille;   /*Nombre de strings actuellement dans le tableau*/
    	size_t capacité; /*Nombre de places dans le tableau*/
    };
    Avec taille <= capacité, à tout moment.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Membre averti Avatar de jbarreau-mainson
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    446
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 446
    Points : 412
    Points
    412
    Par défaut
    Cet homme est nationallement connu ou quoi !

    "moustache coucou" à vous alors !

  8. #8
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Non, c'est juste que je suis l'un des meilleurs élèves qu'il n'a jamais eu. Non, ce n'est pas une faute de français, c'était "Trico" mon prof (bon prof de C, mauvais prof de C++). Je suis devenu copain avec M. suite à une co****ie que j'ai faite...

    Note: Pour copier une chaîne (ou seulement la fin de cette chaîne) vers un buffer alloué sur le tas, rien ne vaut la fonction strdup(). Si elle n'est pas déjà disponible sur ta plate-forme, elle est facile à réécrire:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    char *strdup(char const *src)
    {
    	size_t const lengthInChars = strlen(src);
    	size_t const sizeInChars = lengthInChars + 1;
    	char * dest = malloc(sizeInChars * sizeof *dest);
    	if(dest != NULL)
    		strcpy(dest, src);
    	return dest;
    }
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 143
    Points : 169
    Points
    169
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char * dest = malloc(sizeInChars * sizeof *dest);
    Jolie ca O.o jamais vu avant ??!!

    le sizeInChars te donne la taille de la chaine ?


    PS :Biensûr Trico (j'avou en C++ pouhouhouh xD) et Moumma et sa moummassue :p

    Bref bonne chance pour ton projet m'sieur Passe le bonjour a Moumma de la part de "paupiette" :p il comprendra xD

  10. #10
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    sizeInChars donne la taille (caractère nul compris) de la chaîne en caractères, dont si un jour je décide de changer le type de dest de char en wchar_t, l'appel à malloc() sera toujours valide.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  11. #11
    Modérateur
    Avatar de Overcrash
    Homme Profil pro
    Architecte Logiciel et responsable CRM (Salesforce)
    Inscrit en
    Mai 2008
    Messages
    1 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte Logiciel et responsable CRM (Salesforce)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 254
    Points : 1 875
    Points
    1 875
    Par défaut
    bonjour,

    J'ai essayer ce que tu m'a dit medinoc enfin de ce que j'ai compris mais il reste un problème sur le strcpy qui foire a chaque coup .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    #include "appli.h"
     
    void Receive_Dsp()
    {
     
    	FILE* fichier = NULL;
    	char mot[TAILLEMAX];
    	char temp[TAILLEMAX];
    	int i,k=0,j=0;
    	struct ArrayList_string motc;
     
    	motc.capacite=TAILLEMAX;
    	motc.taille=0;
     
     
     
       fichier = fopen(NomFichier,"r" );
       if (fichier == NULL) Fin("erreur du fopen");
     
       while (fscanf(fichier,"%s",mot) != EOF)
       {
    		printf("%s\n", mot);								  // test debug 
    		if(strncmp(mot,"SOURCE=",7)==0)
    		{
    			puts("BINGO voila le mot demander!!!!");          // test debug 
    			getch();
    			j=0;
     
    			//for (i=9, j=0 ; mot[i]!= '\0' ; i++,j++)  
    			//{
     
    				if(strstr(mot,".c") != NULL)
    				{
    					puts("le .c a ete trouver");
    					getch();
    					strcpy(motc.ppStrings,mot+9);
     
    					//strcpy(motc[k],mot+9);     // copy du mot trouver dans un deuxieme buffer!
    					//printf("%s",motc[k]);
    					printf("valeur du tableau a %d : %d ",motc.taille,motc.ppStrings);
    					getch();
    					//k++;
    					motc.taille=motc.taille+1;
    					if (motc.taille<=motc.capacite) Fin("array overflow"); 
    				}
     
    				/*if(strstr(mot,".h") != NULL)
    				{
    					puts("le .h a ete trouver");
    					getch();
     
    					strcpy(motc[k],mot+9);     // copy du mot trouver dans un deuxieme buffer!
    					printf("%s",motc[k]);
    					getch();
    					k++;
     
    				}*/
     
     
    					getch();
    			//}
    			//puts(motc[k]);
    			//getch();
    			system("CLS");
    		}
       }
     
       fclose(fichier);
    }
    ---
    Overcrash

    Je ne lis pas les codes qui ne sont pas indentés.
    Merci de les messages utiles en cliquant en bas à droite du message

    Bloqué par le firewall pour accéder au chat ? Essayez avec l'adresse en direct : http://87.98.168.209/

  12. #12
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    strcpy(motc.ppStrings,mot+9);
    Ça compile sans warning, ça?

    Tu dois te faire une fonction pour ajouter une string à ta liste. Cette fonction doit:
    1. faire un realloc() si taille == capacité (il convient de multiplier la capacité du tableau par 1.5) (attention à la gestion d'erreur)
    2. ajouter la chaîne : ppStrings[taille++] = strdup(texte).


    Écris-moi le code de la fonction avec cette spécification, je te corrigerai:
    • Prototype: int AjouterString(struct ArrayList_string *pListe, char const *chaine)
    • Retourne 0 si OK, -1 si erreur (échec de realloc).


    PS: Si j'ai bien compris, TAILLEMAX est la longueur maximale d'un mot. Cela n'a rien à voir avec la capacité de la liste.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  13. #13
    Modérateur
    Avatar de Overcrash
    Homme Profil pro
    Architecte Logiciel et responsable CRM (Salesforce)
    Inscrit en
    Mai 2008
    Messages
    1 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte Logiciel et responsable CRM (Salesforce)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 254
    Points : 1 875
    Points
    1 875
    Par défaut
    Oui TAILLEMAX est la longueur maximal de la chaine,

    je comprend pas trop l'histoire de la fonction peut tu développé stp ?
    ---
    Overcrash

    Je ne lis pas les codes qui ne sont pas indentés.
    Merci de les messages utiles en cliquant en bas à droite du message

    Bloqué par le firewall pour accéder au chat ? Essayez avec l'adresse en direct : http://87.98.168.209/

  14. #14
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    C'est simple: Tu vas avoir besoin d'une telle fonction dans ton programme, pour ajouter chaque chaîne à la liste.

    Tu vas donc écrire cette fonction, et je corrigerai si tu te trompes. Mais je ne l'écrirai pas pour toi!
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  15. #15
    Modérateur
    Avatar de Overcrash
    Homme Profil pro
    Architecte Logiciel et responsable CRM (Salesforce)
    Inscrit en
    Mai 2008
    Messages
    1 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte Logiciel et responsable CRM (Salesforce)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 254
    Points : 1 875
    Points
    1 875
    Par défaut
    ok , non je ne comptais pas que tu me l'écrive, sinon j'aurais commencé mon poste par, peut tu m'ecrire la fonction stp et me faire mon projet ^^

    Je m'y met normalement tu devrais avoir ca la semaine prochaine car en ce moment c'est pas la grande forme.

    Ludo
    ---
    Overcrash

    Je ne lis pas les codes qui ne sont pas indentés.
    Merci de les messages utiles en cliquant en bas à droite du message

    Bloqué par le firewall pour accéder au chat ? Essayez avec l'adresse en direct : http://87.98.168.209/

Discussions similaires

  1. Tableau de pointeur de fonction
    Par Gryzzly dans le forum C
    Réponses: 7
    Dernier message: 31/12/2005, 10h47
  2. Tableau de pointeurs sur objets
    Par bassim dans le forum C++
    Réponses: 11
    Dernier message: 13/12/2005, 19h45
  3. [GCC] Tableau de pointeurs pour accès multiples en asm
    Par Flo. dans le forum x86 32-bits / 64-bits
    Réponses: 2
    Dernier message: 12/12/2005, 08h47
  4. tableau de pointeurs
    Par seal3 dans le forum C++
    Réponses: 7
    Dernier message: 01/11/2005, 20h51
  5. Tableau de pointeurs de fonctions
    Par Alp dans le forum C++
    Réponses: 7
    Dernier message: 29/10/2005, 13h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo