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

XCode Discussion :

[DEV] [XCODE] [C] Fonction gets : unsafe


Sujet :

XCode

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Points : 1
    Points
    1
    Par défaut [DEV] [XCODE] [C] Fonction gets : unsafe
    Bonjour a tous,

    Après avoir parcourus les sujets mac et xcode du forum (et aussi pas mal de pages google), je ne trouve toujours pas la solution à mon problème.

    Je développe en langage C avec xcode (avec un macbook unibody), et je dois lire une chaîne de caractère dans le cadre d'un champs remarque.
    Mon bout de code :
    [CODE]
    printf("\nRemarque : ");
    gets(tab_secteur[nb_secteur].remarque);
    [\CODE]
    Mon problème est que xcode ne me met pas d'erreur a la compilation mais à l'exécution du programme j'ai une erreur :
    "warning: this program uses gets(), which is unsafe."
    et je ne peu donc pas faire ma saisie.

    Quelqu'un a-t'il déjà eu ce genre de problème ? si oui, comment l'avez-vous résolut ?

    Merci à tous.

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Mai 2003
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 3 240
    Points : 11 101
    Points
    11 101
    Par défaut
    man gets te conseille fortement d'utiliser fgets à la place.
    Vincent Brabant

    Ne pas me contacter par MP ni par mail pour des questions techniques. Ma liste d'amis restera vide.

    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Dans un 1er temps, merci de votre aide, je suis débutant en programmation avec le langage C et xcode.

    J'ai tester la fonction "fgets" avec mon code, je n'ai plus d'erreur mais je ne peu effectuer de saisie ...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    printf("\nRemarque : ");
    gets(tab_secteur[nb_secteur].remarque);
    Avant ... Après

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    printf("\nRemarque : ");
    fgets(tab_secteur[nb_secteur].remarque, 100, stdin);
    Remarque : ma variable fait référence a une structure définie, le 100 est égal au nombre de caractère de la chaine définie dans la structure.

    Encore une idée ?

    Merci.

  4. #4
    Membre expérimenté Avatar de Ceylo
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 216
    Points : 1 312
    Points
    1 312
    Par défaut
    On peut voir comment tu définis ta structure ?

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Bien sur, la voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    
    typedef struct secteur
    	{
    		char nom[20], remarque[100];
    		int id_secteur, nb_offres;
    	} secteur;
    Merci.

  6. #6
    Membre expérimenté Avatar de Ceylo
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 216
    Points : 1 312
    Points
    1 312
    Par défaut
    Ce code fonctionne chez moi :
    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
    #include <stdlib.h>
    #include <stdio.h>
     
    typedef struct secteur
    {
        char nom[20], remarque[100];
        int id_secteur, nb_offres;
    } secteur;
     
    int main(void)
    {
        secteur tab_secteur[10] = {0};
     
        printf("\nRemarque : ");
        fgets(tab_secteur[0].remarque, 100, stdin);
        printf("entree:<%s>\n", tab_secteur[0].remarque);
     
        return 0;
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Ceylos-MacBook:desktop lucas$ ./prog
    
    Remarque : ergizue
    entree:<ergizue
    >

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Salut,

    La il y a un hic, on a le même code et je ne peu toujours pas saisir quelque chose dans ma remarque.

    la strucutre est idem, je declare mon tab_secteur comme toi (a l'exception du "= {0}"), sauf qu'il est situé apres la structure avant le int main ()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    
    secteur tab_secteur[100];
    int nb_secteur = 0;
    et pour la ligne avec fgets, nos variables diffèrents, ton 0 correspond a mon nb_secteur et le 100 au nb de char de la remarque.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    
    fgets(tab_secteur[nb_secteur].remarque, 100, stdin);
    Mais toujours pas de possibilités de saisie. Une idée ???

    Merci

Discussions similaires

  1. Réponses: 7
    Dernier message: 18/03/2007, 02h13
  2. fonction get http ?
    Par Juho06 dans le forum VB.NET
    Réponses: 2
    Dernier message: 14/03/2007, 20h11
  3. HashMap et la fonction get
    Par myspirou dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 09/03/2007, 00h57
  4. pourquoi mettre en inline une fonction get.. ?
    Par superC dans le forum C++
    Réponses: 4
    Dernier message: 25/02/2007, 19h35
  5. Fonction Get() renvoyant les mauvaises valeurs
    Par jairbubbles dans le forum XML
    Réponses: 1
    Dernier message: 20/11/2006, 12h33

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