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 :

Pointeurs, Structures etc....


Sujet :

C

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2004
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 17
    Points : 11
    Points
    11
    Par défaut Pointeurs, Structures etc....
    Salut !!

    je dois ecrire un programme en c pour le boulot, et je me heurte au probleme suivants:

    j'ai une structure que voici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    typedef struct {
      char *pszWorkDir;
      char *pszTempDir;
      char *pszEntreeDir;
      char *pszSortieDir;
      char *pszArchiveDir;
      char *pszRejetDir;
      char *pszErreurDir;
      char *pszAnomalieDir;
      char *pszSeparateur;
    } ParametresILAB;

    une fonction dont voici la signature:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    short lireMotCle(char *pszFichierIni, char *pszSection, char *pszMotCle, char *pszResult);
    dans mon code, j'appelle la fonction suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    .
    ..
    ...
    ParametresILAB pstParametres;
    sRetour = initialiserParametres(pszNomFichier, &pstParametres);
    printf("%s\r\n", pstParametres.pszTempDir);
    .
    ..
    ...
    avec:
    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
    short initialiserParametres (char *pszFileIni, ParametresILAB *pstParametres){
     
      short sRetour = CR_OK;
      memset ((void *)pstParametres, (int) NULL, sizeof (ParametresILAB));
     
      pstParametre->pszWorkDir = (char *) getenv("OCTALE_WORK");
      sRetour = lireMotCle(pszFileIni, SECTION, "REP_TMP", (char *)&pstParametre->pszTempDir);
      printf("%s\r\n", &pstParametre->pszTempDir);
      sRetour = lireMotCle(pszFileIni, SECTION, "REP_ENTRE", (char *)&pstParametre->pszEntreeDir);    
      printf("%s\r\n", &pstParametre->pszEntreeDir);
      sRetour = lireMotCle(pszFileIni, SECTION, "REP_SORTIE", (char *)&pstParametre->pszSortieDir);
      printf("%s\r\n", &pstParametre->pszSortieDir);
      sRetour = lireMotCle(pszFileIni, SECTION, "REP_ARCHIVE", (char *)&pstParametre->pszArchiveDir);
      printf("%s\r\n", &pstParametre->pszArchiveDir);
      sRetour = lireMotCle(pszFileIni, SECTION, "REP_REJET", (char *)&pstParametre->pszRejetDir);
      printf("%s\r\n", &pstParametre->pszrejetDir);
      sRetour = lireMotCle(pszFileIni, SECTION, "REP_ERREUR", (char *)&pstParametre->pszErreurDir);
      printf("%s\r\n", &pstParametre->pszErreurDir);
      sRetour = lireMotCle(pszFileIni, SECTION, "REP_ANOMALIE", (char *)&pstParametre->pszAnomalieDir);
      printf("%s\r\n", &pstParametre->pszAnomalieDir);
      sRetour = lireMotCle(pszFileIni, SECTION, "SEPARATEUR", (char *)&pstParametre->pszSeparateur);
      printf("%s\r\n", &pstParametre->pszSeparateur);
     
      return (sRetour);
    }

    Voici le resultat afficher:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    TMP
    ENTREE
    SORTIE
    ARCHIVE
    REJET
    ERREUR
    ANOMALIE
    ;
    Memory fault

    pourquoi !!???

    merci pour votre aide !!

    @+
    Nico

  2. #2
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut Re: Pointeurs, Structures etc....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    typedef struct {
      char *pszWorkDir;
      char *pszTempDir;
      char *pszEntreeDir;
      char *pszSortieDir;
      char *pszArchiveDir;
      char *pszRejetDir;
      char *pszErreurDir;
      char *pszAnomalieDir;
      char *pszSeparateur;
    } ParametresILAB;
    Belle collection de pointeurs non initialisés. Voyons la suite...
    une fonction dont voici la signature:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    short lireMotCle(char *pszFichierIni, char *pszSection, char *pszMotCle, char *pszResult);
    Pourquoi 'short' ?
    dans mon code, j'appelle la fonction suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ParametresILAB pstParametres;
    sRetour = initialiserParametres(pszNomFichier, &pstParametres);
    printf("%s\r\n", pstParametres.pszTempDir);
    avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    short initialiserParametres (char *pszFileIni, ParametresILAB *pstParametres){
     
      short sRetour = CR_OK;
      memset ((void *)pstParametres, (int) NULL, sizeof (ParametresILAB));
    C'est tordu ! C'est quoi tous ces castss. T'es sûr que tu compiles en C ? L'extension du fichier source est bien .c et non ..cpp ni .C ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      memset (pstParametres, 0, sizeof *pstParametres);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      pstParametre->pszWorkDir = (char *) getenv("OCTALE_WORK");
    Pourquoi pas. Il faut juste garder en mémoire que le pointeur peut être NULL. Il suffit que la variable n'existe pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      sRetour = lireMotCle(pszFileIni, SECTION, "REP_TMP", (char *)&pstParametre->pszTempDir);
      printf("%s\r\n", &pstParametre->pszTempDir);
    Quelle est l'interface de lireMotCle() ? Pourquoi & ? J'aurais mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      printf("%s\r\n", pstParametre->pszTempDir);
    Et puis, là aussi, le pointeur peut être NULL. Tu ne testes pas le code retour (sRetour).
    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
     
      sRetour = lireMotCle(pszFileIni, SECTION, "REP_ENTRE", (char *)&pstParametre->pszEntreeDir);    
      printf("%s\r\n", &pstParametre->pszEntreeDir);
      sRetour = lireMotCle(pszFileIni, SECTION, "REP_SORTIE", (char *)&pstParametre->pszSortieDir);
      printf("%s\r\n", &pstParametre->pszSortieDir);
      sRetour = lireMotCle(pszFileIni, SECTION, "REP_ARCHIVE", (char *)&pstParametre->pszArchiveDir);
      printf("%s\r\n", &pstParametre->pszArchiveDir);
      sRetour = lireMotCle(pszFileIni, SECTION, "REP_REJET", (char *)&pstParametre->pszRejetDir);
      printf("%s\r\n", &pstParametre->pszrejetDir);
      sRetour = lireMotCle(pszFileIni, SECTION, "REP_ERREUR", (char *)&pstParametre->pszErreurDir);
      printf("%s\r\n", &pstParametre->pszErreurDir);
      sRetour = lireMotCle(pszFileIni, SECTION, "REP_ANOMALIE", (char *)&pstParametre->pszAnomalieDir);
      printf("%s\r\n", &pstParametre->pszAnomalieDir);
      sRetour = lireMotCle(pszFileIni, SECTION, "SEPARATEUR", (char *)&pstParametre->pszSeparateur);
      printf("%s\r\n", &pstParametre->pszSeparateur);
     
      return (sRetour);
    }

    Voici le resultat afficher:
    TMP
    ENTREE
    SORTIE
    ARCHIVE
    REJET
    ERREUR
    ANOMALIE
    ;
    Memory fault

    pourquoi !!???
    Comportement indéfini ? Pointeur NULL ?

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2004
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 17
    Points : 11
    Points
    11
    Par défaut Re: Pointeurs, Structures etc....
    Citation Envoyé par Emmanuel Delahaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    typedef struct {
      char *pszWorkDir;
      char *pszTempDir;
      char *pszEntreeDir;
      char *pszSortieDir;
      char *pszArchiveDir;
      char *pszRejetDir;
      char *pszErreurDir;
      char *pszAnomalieDir;
      char *pszSeparateur;
    } ParametresILAB;
    Belle collection de pointeurs non initialisés. Voyons la suite...
    -> genre j'ai le droit de faire ?????????
    typedef struct {
    char *pszWorkDir = NULL;
    char *pszTempDir = NULL;
    char *pszEntreeDir = NULL;
    char *pszSortieDir = NULL;
    char *pszArchiveDir = NULL;
    char *pszRejetDir = NULL;
    char *pszErreurDir = NULL;
    char *pszAnomalieDir = NULL;
    char *pszSeparateur = NULL;
    } ParametresILAB;


    Citation Envoyé par Emmanuel Delahaye
    une fonction dont voici la signature:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    short lireMotCle(char *pszFichierIni, char *pszSection, char *pszMotCle, char *pszResult);
    Pourquoi 'short' ?
    -> bah je sais pas, c'est une fonction déjà écrite, alors c'est du short qu'elle renvoie

    Citation Envoyé par Emmanuel Delahaye
    dans mon code, j'appelle la fonction suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ParametresILAB pstParametres;
    sRetour = initialiserParametres(pszNomFichier, &pstParametres);
    printf("%s\r\n", pstParametres.pszTempDir);
    avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    short initialiserParametres (char *pszFileIni, ParametresILAB *pstParametres){
     
      short sRetour = CR_OK;
      memset ((void *)pstParametres, (int) NULL, sizeof (ParametresILAB));
    C'est tordu ! C'est quoi tous ces castss. T'es sûr que tu compiles en C ?
    -> bah si je cast pas, il me met des warning sur le type des pointeurs...

    Citation Envoyé par Emmanuel Delahaye
    L'extension du fichier source est bien .c et non ..cpp ni .C ?
    oui, c'est .c
    Citation Envoyé par Emmanuel Delahaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      memset (pstParametres, 0, sizeof *pstParametres);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      pstParametre->pszWorkDir = (char *) getenv("OCTALE_WORK");
    Pourquoi pas. Il faut juste garder en mémoire que le pointeur peut être NULL. Il suffit que la variable n'existe pas.
    -> explications ??

    Citation Envoyé par Emmanuel Delahaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      sRetour = lireMotCle(pszFileIni, SECTION, "REP_TMP", (char *)&pstParametre->pszTempDir);
      printf("%s\r\n", &pstParametre->pszTempDir);
    Quelle est l'interface de lireMotCle() ?
    -> interface ?? ou signature ??

    Citation Envoyé par Emmanuel Delahaye
    Pourquoi & ? J'aurais mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      printf("%s\r\n", pstParametre->pszTempDir);
    Et puis, là aussi, le pointeur peut être NULL.


    Tu ne testes pas le code retour (sRetour).
    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
    [/quote]
     
    -> pas besoin pour le moment de tester le code retour...
     
    -> bah si je met pas &, j'ai un Memory fault
     
    [quote="Emmanuel Delahaye"]  sRetour = lireMotCle(pszFileIni, SECTION, "REP_ENTRE", (char *)&pstParametre->pszEntreeDir);    
      printf("%s\r\n", &pstParametre->pszEntreeDir);
      sRetour = lireMotCle(pszFileIni, SECTION, "REP_SORTIE", (char *)&pstParametre->pszSortieDir);
      printf("%s\r\n", &pstParametre->pszSortieDir);
      sRetour = lireMotCle(pszFileIni, SECTION, "REP_ARCHIVE", (char *)&pstParametre->pszArchiveDir);
      printf("%s\r\n", &pstParametre->pszArchiveDir);
      sRetour = lireMotCle(pszFileIni, SECTION, "REP_REJET", (char *)&pstParametre->pszRejetDir);
      printf("%s\r\n", &pstParametre->pszrejetDir);
      sRetour = lireMotCle(pszFileIni, SECTION, "REP_ERREUR", (char *)&pstParametre->pszErreurDir);
      printf("%s\r\n", &pstParametre->pszErreurDir);
      sRetour = lireMotCle(pszFileIni, SECTION, "REP_ANOMALIE", (char *)&pstParametre->pszAnomalieDir);
      printf("%s\r\n", &pstParametre->pszAnomalieDir);
      sRetour = lireMotCle(pszFileIni, SECTION, "SEPARATEUR", (char *)&pstParametre->pszSeparateur);
      printf("%s\r\n", &pstParametre->pszSeparateur);
     
      return (sRetour);
    }

    Voici le resultat afficher:
    TMP
    ENTREE
    SORTIE
    ARCHIVE
    REJET
    ERREUR
    ANOMALIE
    ;
    Memory fault

    pourquoi !!???
    Comportement indéfini ? Pointeur NULL ?

    petite précision, je développe a distance (via une session telnet) sur une machine UNIX.

    @+

  4. #4
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut Re: Pointeurs, Structures etc....
    Citation Envoyé par kameha
    Citation Envoyé par Emmanuel Delahaye
    Belle collection de pointeurs non initialisés. Voyons la suite...
    -> genre j'ai le droit de faire ?????????
    typedef struct {
    char *pszWorkDir = NULL;
    char *pszTempDir = NULL;
    char *pszEntreeDir = NULL;
    char *pszSortieDir = NULL;
    char *pszArchiveDir = NULL;
    char *pszRejetDir = NULL;
    char *pszErreurDir = NULL;
    char *pszAnomalieDir = NULL;
    char *pszSeparateur = NULL;
    } ParametresILAB;
    Non. Simplement, on s'attend quelque part à voir ces pointeurs de faire initialiser. C'est tout. Simple reflexe de celui qui lit ce genre de code.

    Citation Envoyé par kameha
    Citation Envoyé par Emmanuel Delahaye
    C'est tordu ! C'est quoi tous ces casts. T'es sûr que tu compiles en C ?
    -> bah si je cast pas, il me met des warning sur le type des pointeurs...
    Citation Envoyé par kameha
    Citation Envoyé par Emmanuel Delahaye
    L'extension du fichier source est bien .c et non ..cpp ni .C ?
    oui, c'est .c
    Alors il y a un problème. Quel est ton compilateur ?

    Citation Envoyé par kameha
    Citation Envoyé par Emmanuel Delahaye
    Citation Envoyé par kameha
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      pstParametre->pszWorkDir = (char *) getenv("OCTALE_WORK");
    Pourquoi pas. Il faut juste garder en mémoire que le pointeur peut être NULL. Il suffit que la variable n'existe pas.
    -> explications ??
    La variable d'environnement OCTALE_WORK n'est pas forcément définie. getenv() peut très bien retourner NULL.

    Citation Envoyé par kameha
    Citation Envoyé par Emmanuel Delahaye
    Citation Envoyé par kameha
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      sRetour = lireMotCle(pszFileIni, SECTION, "REP_TMP", (char *)&pstParametre->pszTempDir);
      printf("%s\r\n", &pstParametre->pszTempDir);
    Quelle est l'interface de lireMotCle() ? Je me réponds tout seul, (et je me réveille, par la même occasion...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    short lireMotCle(char *pszFichierIni, char *pszSection, char *pszMotCle, char *pszResult);
    Pourquoi & ? J'aurais mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      printf("%s\r\n", pstParametre->pszTempDir);
    Et puis, là aussi, le pointeur peut être NULL.

    Tu ne testes pas le code retour (sRetour).
    -> pas besoin pour le moment de tester le code retour...
    Ah ? Et si la donnée du fichier n'existe pas ? La fonction met quoi dans la variable ?

    Citation Envoyé par kameha
    -> bah si je met pas &, j'ai un Memory fault
    L'erreur est ailleurs...

    A mon avis, il faut appeler la fonction comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
       sRetour = lireMotCle (pszFileIni
                                      , SECTION
                                      , "REP_TMP"
                                      , pstParametre->pszTempDir);
       if (sRetour == CR_OK)
       {
          printf ("%s\n", pstParametre->pszTempDir);
       }
    Avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    typedef struct {
      char *pszWorkDir;
      char pszTempDir[256];
    <...>
    } ParametresILAB;
    J'ajoute que l'interface (la signature) de la fonction lireMotCle() est faible. En effet il n'y a pas de paramètre indiquand la taille de la chaine de destination. J'ai mis (au pif) une taille de 256 bytes, mais il y a toujours un risque de débordement. C'est pas bon du tout.

    Qui a écrit cette fonction que je lui botte les fesses ?



    PS : la notation hongroise, à la Microsoft, ça me sort par les yeux...

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    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 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Plutôt que 256, je dirais plutôt 260 (MAX_PATH)

    Et pour la notation hongroise, bien utilisée, elle a ses avantages... (Surtout pour lire le code d'un autre, et parfois même son propre code quand on n'a pas bossé dessus depuis un moment)

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 135
    Points : 81
    Points
    81
    Par défaut
    compile avec -W -Wall -ansi -pedantic -Werror...

    Si ca compile deja tu auras beaucoup plus de chance que ca fonctionne...

    Ensuite comme t'as dis kameha moi je pencherai avant toute chose sur les pointeurs non initialises...

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    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 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Ajoute -Wextra et -Wwrite-strings qui sont souvent utiles...

  8. #8
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Médinoc
    Plutôt que 256, je dirais plutôt 260 (MAX_PATH)
    MAX_PATH, ok. C'est standard ?
    Et pour la notation hongroise, bien utilisée, elle a ses avantages... (Surtout pour lire le code d'un autre, et parfois même son propre code quand on n'a pas bossé dessus depuis un moment)
    Comme ça, oui

    http://emmanuel-delahaye.developpez....ge.htm#nommage

    mais pas 'à-la-Microsoft'. Illisible, inmaintenable...

  9. #9
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    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 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    MAX_PATH, ok. C'est standard ?
    Sous DOS/Windows, oui, ailleurs, Ça n'a pas trop l'air...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep MAX_PATH /usr/include/*
    Ne renvoit rien sous FreeBSD...

    De plus, est-ce qu'il y a une limite sous nux?

  10. #10
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Bonjour,
    Citation Envoyé par Médinoc
    Citation Envoyé par Emmanuel Delahaye
    MAX_PATH, ok. C'est standard ?
    Sous DOS/Windows, oui, ailleurs, Ça n'a pas trop l'air...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep MAX_PATH /usr/include/*
    Ne renvoit rien sous FreeBSD...

    De plus, est-ce qu'il y a une limite sous nux?
    FILENAME_MAX est standard! Inclure <stdio.h>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. pointeurs, structures retournent NULL
    Par christianf dans le forum Débuter
    Réponses: 1
    Dernier message: 17/07/2010, 00h39
  2. Pointeur, structure, allocation mémoire
    Par rirola12 dans le forum C
    Réponses: 4
    Dernier message: 22/04/2010, 17h14
  3. Pointeur structure : besoin d'éclaircissements
    Par julien.63 dans le forum C
    Réponses: 4
    Dernier message: 28/04/2007, 00h26
  4. Violation d 'accés, pointeur & structure
    Par moule dans le forum C
    Réponses: 7
    Dernier message: 27/02/2007, 09h42
  5. Réponses: 12
    Dernier message: 03/01/2006, 17h23

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