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 :

Problème de fonctions et tableaux


Sujet :

C

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 56
    Points : 27
    Points
    27
    Par défaut Problème de fonctions et tableaux
    Bonjour j'essaye de recupérer un tableau d'un fonction mais cela ne fonctionne pas.
    Le compilateur me donne l'erreur:
    172 incompatible types in assignment

    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
     
    char edit[30][116] = { {0} };
     
    char tab2[116] = {0};
    char tab3[116] = {0};
    .
    .
    .
     
     for(i=0;i<=nbrlignes;i++)
                   {
                     strcpy(tab2, edit[i]);                     
                     tab3 = centrage(tab2);
                     strcpy(edit[i], tab3);
                      }
    la fonction :
    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
    char centrage(char tab[116])
    {
    int taille_u, largeur,i, j ,espace_depart;
    char new_tab[116];
     
    largeur=114;   
     
     
    taille_u = strlen(tab);
     
    espace_depart = (largeur - taille_u)/2;
     
    for(i=0;i<=espace_depart;i++)
    {
     new_tab[i] =' ';
    }
    new_tab[espace_depart+1] = '\0';
     
    strcat(new_tab, tab);     
     
    return new_tab;     
    }

    Merci beaucoup

  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 : 67
    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 sebdu94
    Le compilateur me donne l'erreur:
    172 incompatible types in assignment
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    char tab2[116] = {0};
    char tab3[116] = {0};
    .
                     tab3 = centrage(tab2);
    Un tableau est une 'non-modifiable L-value'. Seuls les éléments sont modifiables, pas le tableau lui même. Il faut donc passer l'adresse du tableau (ou du premier élément du tableau) à la fonction qui va elle même écrire dans les éléments.
    ou a souvent besoin de la taille, ça évite les âneries...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                     centrage(tab3, sizeof tab3 / sizeof *tab3, tab2);
    Pas de Wi-Fi à la maison : CPL

  3. #3
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    char centrage(char tab[116])
    {
    int taille_u, largeur,i, j ,espace_depart;
    char new_tab[116];
     ......  
     
    return new_tab;     
    }
    new_tab est l'adresse d'un tableau local. Le tableau sera détruit en sortie de la fonction. Le code qui a invoqué la fonction se retrouve avec l'adresse de qq chose qui n'existe plus.
    On ne doit jamais retourner l'adresse d'une variable locale
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

Discussions similaires

  1. [Tableaux] problème de fonction include
    Par titounnette dans le forum Langage
    Réponses: 4
    Dernier message: 14/01/2008, 12h07
  2. [MFC][WINSOCK] Problème avec fonction recv
    Par Le Farfadet dans le forum MFC
    Réponses: 4
    Dernier message: 23/09/2005, 11h00
  3. Problème de fonction
    Par Anduriel dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/05/2005, 20h30
  4. Problème avec fonction d'envoie de mail
    Par zyg dans le forum Réseau/Web
    Réponses: 1
    Dernier message: 23/02/2005, 08h48
  5. [Requête] Problème avec fonction "DATE_FORMAT()"
    Par sekiryou dans le forum Requêtes
    Réponses: 4
    Dernier message: 11/01/2005, 21h52

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