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

Réseau C Discussion :

Initialiser un string dans une fonction ?


Sujet :

Réseau C

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2015
    Messages : 3
    Par défaut Initialiser un string dans une fonction ?
    Bonjour,
    Je voila j'aimerais faire un programme simple qui choisi aléatoirement un mot et le stock dans une variable crée préalablement et je bloque vraiment, je début et j'ai encore du mal avec les pointeurs ducoup j'ai vraiment tester beaucoup de chose. Voici mon code :
    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 <stdio.h>
    #include <stdlib.h>
    #include <ctype.h>
    #include <time.h>
    //fonction cherchant un nombre aléatoirement.
    int ALEA()
    {
    	srand(time(NULL));
    	int nombre = rand()%9;
    	return nombre;
    }
    //fonction retournant un mot choisi au hasard dans le "dico". 
    void motChoisi(char* motChoisi,char **dico)
    {
    	int indiceMots;
    	indiceMots= ALEA();
    	int taille = 0;
    	while (dico[indiceMots][taille] !='\0')
    	{
    		taille++;
    	}
    	motChoisi = malloc(sizeof(char)*(taille+1));
    	int i = 0;
    	while(dico[indiceMots][i] != '\0')
    	{
    		motChoisi[i]=dico[indiceMots][i];
    		i++;
    	}
    	motChoisi[i]='\0';
    }
     
     
    int main(int argc, char const *argv[])
    {
    	char *dico[] = {"UN", "DEUX", "TROIS", "QUATRE", "CINQ", "SIX", "SEPT", "HUIT", "NEUF", "DIX"};
    	char *motChoisi;
    	motChoisi(motChoisi, dico);// l'erreur pointe vers cette ligne
    	printf("%s\n",motChoisi);
    	return 0;
    }
    Gcc me renvoie une erreur : error: called object type 'char *' is not a function or function pointer

    Est-ce que quelqu'un pourrais m'expliquer mon erreur ?

    Merci de votre aide.

  2. #2
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Salut,

    ton souci ne viendrait-il pas du fait que ta variable et ta fonction s'appellent tous deux "motChoisi" ?

    Bon dev.

  3. #3
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2013
    Messages : 610
    Billets dans le blog
    21
    Par défaut
    Tu as également un autre problème dans ta fonction motchoisi: tu perds ton allocation mémoire puisque le pointeur motchoisi est remplacé par celui renvoyé par malloc. Quand on fait une allocation dynamique au seine d'une fonction il faut prendre un pointeur sur pointeur en argument: motchoisi (char **mc, char ** dico) { *mc = malloc ( etc. }

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2015
    Messages : 3
    Par défaut
    Je vous remercie tous les deux d'abord pour avoir pris le temps de me répondre.
    J'ai compris deux choses : Evitez de donner le même nom à deux object de mon programme et de toujours faire un malloc sur un pointeur ! merci beaucoup !

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

Discussions similaires

  1. [PowerShell] Comment passer une string "par référence" dans une fonction ?
    Par Plageman dans le forum Scripts/Batch
    Réponses: 7
    Dernier message: 11/11/2010, 15h01
  2. Réponses: 3
    Dernier message: 31/05/2010, 17h18
  3. Réponses: 9
    Dernier message: 03/05/2010, 19h40
  4. Utiliser un string dans une fonction de setInterval
    Par strat0 dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 02/08/2007, 17h56
  5. initialiser un parametre dans une fonction
    Par kanzarih dans le forum Servlets/JSP
    Réponses: 11
    Dernier message: 02/03/2007, 14h46

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