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

Bibliothèque standard C Discussion :

gets contre fgets - chaine de caracteres espace


Sujet :

Bibliothèque standard C

  1. #1
    Membre régulier Avatar de nicodn02
    Profil pro
    Consultant .NET
    Inscrit en
    Mars 2007
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Consultant .NET

    Informations forums :
    Inscription : Mars 2007
    Messages : 263
    Points : 97
    Points
    97
    Par défaut gets contre fgets - chaine de caracteres espace
    Bonsoir,
    je voudrais avoir confirmation:

    voulant demander à l'utilisateur de rentrer un nom voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    char *nom;
    ...
    printf("Entrer nom: ");
    scanf("%s", nom);
    Cependant, le scanf est ...enfin voila quoi, et surtout, si l'utilisateur entre un nom composée soit : "truc much" et ba much n'existe pas pour nom.

    J'ai pensé donc à l'utilisation du gets:
    mais dois-je plutôt préférer le fgets?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fgets(nom, strlen(nom), stdin);
    Merci.

    Sachant par suite que j'utilise par exemple le strcpy

  2. #2
    Membre expérimenté
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 727
    Points
    1 727
    Par défaut
    Salut,

    Oui, gets est à proscrire (faq)
    http://c.developpez.com/faq/?page=cl...EEN_gets_fgets

    J'anticipe tes problemes suivants : il faut s'assurer qu'il n'y ait plus rien dans l'entrée standard apres avoir lu une donnée sur l'entrée standard (faq)
    http://c.developpez.com/faq/?page=cl...buffer_clavier

    Note : ton char * ne pointe sur rien qui permette de stoquer des caractères (ya pas de variable de type "chaine", mettez vous ça dans la tete)

  3. #3
    Membre régulier Avatar de nicodn02
    Profil pro
    Consultant .NET
    Inscrit en
    Mars 2007
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Consultant .NET

    Informations forums :
    Inscription : Mars 2007
    Messages : 263
    Points : 97
    Points
    97
    Par défaut
    alors comment, a partir d'un char *nom; utiliser la fonction fgets?

  4. #4
    Membre expérimenté
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Points : 1 421
    Points
    1 421
    Par défaut
    Citation Envoyé par nicodn02 Voir le message
    alors comment, a partir d'un char *nom; utiliser la fonction fgets?
    en ouvrant un bouquin de C avant d'essayer de jouer à l'apprenti sorcier peut être?

    fgets attend un pointeur sur une zone mémoire valide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char nom[20];
    fgets(nom,sizeof(nom),stdin);
    click my www
    ............|___
    ...................\
    .................._|_
    ..................\ /
    ..................."

  5. #5
    Membre régulier Avatar de nicodn02
    Profil pro
    Consultant .NET
    Inscrit en
    Mars 2007
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Consultant .NET

    Informations forums :
    Inscription : Mars 2007
    Messages : 263
    Points : 97
    Points
    97
    Par défaut
    mais pour moi, je doit utiliser ipérativement une
    sinon, les liens précédents me disaient déjà d'avoir quelque chose de valide.

  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
    char* ne signifie pas "zone mémoire magique qui apparait quand on veut".
    C'est juste un pointeur, donc il faut le faire pointer sur quelque chose.

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    /* Ici, pointeur sur un buffer statique */
    char buf[20];
    int taille = sizeof buf;
    char *nom = buf;
     
    fgets(nom, taille, stdin);
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    /* Ici, allocation dynamique */
    #define TAILLE 20
     
    ...
     
    char *nom = malloc(TAILLE * sizeof *nom);
    fgets(nom, TAILLE, stdin);
     
    ...
     
    free(nom), nom=NULL;
    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 expérimenté
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Points : 1 421
    Points
    1 421
    Par défaut
    Citation Envoyé par nicodn02 Voir le message
    mais pour moi, je doit utiliser ipérativement une
    c'est dieu qui t'es apparut en rêve et t'as murmuré: "jeanne, écris char *nom; !"

    sérieusement, il faut impérativement te procurer un cours de C.
    la section C de developpez.com regorge de ressources gratuites, ce serait un très bon début.
    click my www
    ............|___
    ...................\
    .................._|_
    ..................\ /
    ..................."

  8. #8
    Membre régulier Avatar de nicodn02
    Profil pro
    Consultant .NET
    Inscrit en
    Mars 2007
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Consultant .NET

    Informations forums :
    Inscription : Mars 2007
    Messages : 263
    Points : 97
    Points
    97
    Par défaut
    non, simplement que c'est pour un projet informatique, et que l'on a pour consigne de respecter les structures indiquées, et la présente du char* nom.

    L'avantage d'un char * nom c'est que l'on peut mettre un texte aussi long que l'on veut... mais je reste toujours bloqué.

  9. #9
    Membre expérimenté
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Points : 1 421
    Points
    1 421
    click my www
    ............|___
    ...................\
    .................._|_
    ..................\ /
    ..................."

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 371
    Points : 65
    Points
    65
    Par défaut
    Citation Envoyé par nicodn02 Voir le message
    non, simplement que c'est pour un projet informatique, et que l'on a pour consigne de respecter les structures indiquées, et la présente du char* nom.

    L'avantage d'un char * nom c'est que l'on peut mettre un texte aussi long que l'on veut... mais je reste toujours bloqué.

    nom est une chaine ? on peut ecrire justement la taille qu'on veut ....

    tout depend la taille de la chaine que tu lui envois ...

  11. #11
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Citation Envoyé par nicodn02 Voir le message
    non, simplement que c'est pour un projet informatique, et que l'on a pour consigne de respecter les structures indiquées, et la présente du char* nom.

    L'avantage d'un char * nom c'est que l'on peut mettre un texte aussi long que l'on veut... mais je reste toujours bloqué.
    Alors fais comme ce que Médinoc t'as dit!

  12. #12
    Membre régulier Avatar de nicodn02
    Profil pro
    Consultant .NET
    Inscrit en
    Mars 2007
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Consultant .NET

    Informations forums :
    Inscription : Mars 2007
    Messages : 263
    Points : 97
    Points
    97
    Par défaut
    mais c'est la même chose, je suis limité en taille ...
    sinon, puis-je faire ainsi:

    1/ tableau 100
    2/ fgets(tableau)
    3/ on fait un malloc sur le nom avec sizeof(tableau)

    non?

  13. #13
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Non. malloc te permet de créer un tableau dynamiquement, c'est-à-dire pendant l'exécution. De quelle limite veux-tu parler? Au besoin, tu pourra toujours redimensionner ton tableau avec realloc.

  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
    SI tu veux saisir une chaîne de taille illimitée, il faut faire une boucle, avec les realloc() qui vont bien.

    Attention, il n'est pas aisé non plus de bien se servir de realloc(). Voir ici:
    http://emmanuel-delahaye.developpez....es.htm#realloc
    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
    Membre régulier Avatar de nicodn02
    Profil pro
    Consultant .NET
    Inscrit en
    Mars 2007
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Consultant .NET

    Informations forums :
    Inscription : Mars 2007
    Messages : 263
    Points : 97
    Points
    97
    Par défaut
    sinon, je pense que j'opterais pour le coup du buffeur

    Cependant, je n'est pas très bien compris:
    1/ je déclare le buf de taille 20 et je fais pointer nom dessus
    mais apres pourquoi je fais un fgets sur nom ??
    j'aurais penser plutot a faire un fgets sur le buf puis de supprimer le "\n" et de faire un malloc sur nom
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    nom=(char *)malloc(sizeof(char)*strlen(buf));
    suivit d'un :
    non?

  16. #16
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Cependant, je n'est pas très bien compris:
    1/ je déclare le buf de taille 20 et je fais pointer nom dessus
    mais apres pourquoi je fais un fgets sur nom ??
    C'est clair que tu n'as pas compris du tout. L'exemple c'était juste pour montrer qu'un pointeur ça sert à pointer sur une variable (ou une fonction ou un sapin etc.).

    Ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    char *nom;
    ...
    printf("Entrer nom: ");
    scanf("%s", nom);
    C'est 0 (t'as de la chance qu'il n'y ait plus plus bas ...). Il pointe où ton nom? Si tu veux saisir une chaîne il te faux un tableau, pas un pointeur qui ne pointe seul Une Personne sait où. Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    char nom[100];
    ...
    printf("Entrer nom: ");
    scanf("%s", nom);
    Si tu as une variable p qui pointe sur nom
    alors t'aurais aussi pu (mais ce n'est pas une obligation) écrire :

    Et les caractères tapés seront rangés dans nom (puisque, encore une fois, p pointe sur nom), pas dans p, qui elle ne fait que pointer sur nom ...

    Si tu veux créer ton tableau dynamiquement, alors tu utilises malloc.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    char * nom = malloc(100);
    ...
    printf("Entrer nom: ");
    scanf("%s", nom);
    ...
    free(nom);

  17. #17
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par nicodn02 Voir le message
    sinon, je pense que j'opterais pour le coup du buffeur

    Cependant, je n'est pas très bien compris:
    1/ je déclare le buf de taille 20 et je fais pointer nom dessus
    mais apres pourquoi je fais un fgets sur nom ??
    j'aurais penser plutot a faire un fgets sur le buf puis de supprimer le "\n" et de faire un malloc sur nom
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    nom=(char *)malloc(sizeof(char)*strlen(buf));
    suivit d'un :
    non?
    Attention, il est déconseillé de caster la valeur retournée par malloc(), De plus, il te faut allouer un espace mémoire pour strlen(buf) + 1 caractères (il faut de la place pour le caractère nul de fin de chaine). sizeof (char) vaut 1 par définition. Il est donc inutile de le préciser. Je conseille d'écrire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nom = malloc(sizeof *nom * (strlen(buf) + 1));
    Citation Envoyé par Melem Voir le message
    Si tu veux créer ton tableau dynamiquement, alors tu utilises malloc.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    char * nom = malloc(100);
    ...
    printf("Entrer nom: ");
    scanf("%s", nom);
    ...
    free(nom);
    scanf("%s",...) est une des pires utilisations qu'on puisse faire de cette fonction. Essayons d'éviter de l'utiliser dans les exemples alors que le titre du fil fait mention de fgets().

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  18. #18
    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
    Si tu veux faire une saisie de taille "illimitée", l'allocation doit être dynamique donc tu ne déclares pas de buf : Tu fais directement une allocation avec une taille de départ.
    Plus-ou-moins Pseudocode: Pas compilé, pas testé.
    Code C : 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
    char * saisir_avec_allocation()
    {
    	int taille = 20; /* int à cause de fgets() */
    	size_t offset = 0;
    	char * chn = malloc(taille * sizeof *nom); /*pas de cast en C*/
    	int erreur = 0;
    	int fin = 0;
     
    	while(!fin && !erreur)
    	{
    		/* Lecture de la ligne ou partie de ligne. */
    		if(fgets(chn+offset, taille, stdin)==NULL)
    			erreur = 1;
    		else
    		{
    			/* Si on a eu le \n, on peut quitter.
    			   Sinon, il faut réallouer et lire la suite. */
    			char *pLF = strchr(chn+offset, '\n');
    			if(pLF!=NULL)
    			{
    				*pLF = '\0';
    				fin = 1;
    			}
    			else
    			{
    				offset = taille;
    				taille *= 1.5;
    				char *tmp = realloc(chn, taille);
    				if(tmp==NULL)
    					erreur = 1;
    				else
    					chn = tmp;
    			}
    		}
    	}/*while*/
     
    	/* Nettoyage si erreur */
    	if(erreur)
    	{
    		free(chn), chn=NULL;
    	}
     
    	return chn;
    }
    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.

  19. #19
    Membre régulier Avatar de nicodn02
    Profil pro
    Consultant .NET
    Inscrit en
    Mars 2007
    Messages
    263
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Consultant .NET

    Informations forums :
    Inscription : Mars 2007
    Messages : 263
    Points : 97
    Points
    97
    Par défaut
    oulalala, que de réponse, mais je ne vois pas ce que j'attendais.
    Est-ce correcte ceci (pas compiler ni tester)
    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
     
    typedef struct{
      char *nom;
    }Fiche;
     
    void saisie_fiche( Fiche * F)
    {
      char buf[100];
      int taille=sizeof(buf);
      fgets(buf, taille, stdin);
     
      /* je remplace le \n par un \0 */
      char* nl = strchr(buf, '\n');
          if (nl != NULL)
          {
             *nl = '\0';
          }
     
      /* je copie la saisie dans nom */
      F->nom=(char *)malloc(sizeof(char)*strlen(buf));
      strcpy(F->nom, buf);
     
      /* je vide le buffer */
      int c;
      while ((c = getchar()) != '\n' && c != EOF); /* mange le tampon */
    }
     
    int main()
    {
      Fiche f;
      saisie_fiche(&f);
      return 0;
    }
    Vous m'avez dit que en C il ne faut pas faire de cast, comment faire ans mon cas alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    F->char *nom=malloc ....
    Merci d'avance

  20. #20
    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
    Tu peux faire ça, mais ça n'est pas forcément du meilleur intéret.
    Code C : 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
    typedef struct{
      char *nom;
    }Fiche;
     
    void saisie_fiche( Fiche * F)
    {
      char buf[100];
      int taille=sizeof(buf);
      fgets(buf, taille, stdin);
     
      /* je remplace le \n par un \0 */
      char* nl = strchr(buf, '\n');
          if (nl != NULL)
          {
             *nl = '\0';
          }
     
      /* je copie la saisie dans nom */
      F->nom=malloc(sizeof(*buf)*(strlen(buf)+1));
      strcpy(F->nom, buf);
     
      /* je vide le buffer */
      if(nl==NULL)
      {
        int c;
        while ((c = getchar()) != '\n' && c != EOF); /* mange le tampon */
      }
    }
      
    int main()
    {
      Fiche f;
      saisie_fiche(&f);
      free(f.nom);
      return 0;
    }
    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.

Discussions similaires

  1. Réponses: 9
    Dernier message: 06/11/2007, 12h36
  2. [VBA/EXCEL]comparaison de chaine de caractere avec ou sans espace
    Par rodrigue62 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 20/07/2007, 10h48
  3. espace dans une chaine de caractere
    Par nathoun92120 dans le forum Flash
    Réponses: 1
    Dernier message: 31/10/2006, 16h40
  4. [RegEx] Insérer espace dans une chaîne de caractères
    Par bb62 dans le forum Langage
    Réponses: 9
    Dernier message: 17/07/2006, 09h01
  5. espaces et chaines de caractere
    Par Ralfman68 dans le forum Langage
    Réponses: 4
    Dernier message: 11/01/2006, 10h11

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