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 :

scanf et pointeur double


Sujet :

C

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 62
    Points : 38
    Points
    38
    Par défaut scanf et pointeur double
    'jour,
    je sèche sur un truc depuis tout à l'heure, je veux lire et afficher une matrice allouée dynamiquement, voilà mon code (qui ne marche pas)
    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
     
    #include <stdio.h>
    #include <stdlib.h>
     
    float **a;
    int i,j,m,n;
     
    int main()
    {
        printf("Entrer m et n: ");
        scanf("%d%d",&m,&n);
        a=(float **)malloc(m*sizeof(float *));
        for(i=0;i<m;i++)
            a[i]=(float *)malloc(n*sizeof(float));
        for(i=0;i<m;i++)
            for(j=0;j<n;j++)
            {
                printf("Enter the element A[%d][%d] : ",i+1,j+1);
                scanf("%f",a+i+j);
            }
        for(i=0;i<m;i++)
        {
            for(j=0;j<n;j++)
            printf("%5.2f",**a+i+j);
            printf("\n");
        }
        return 0;
    }
    à noter que si les éléments de la matrice sont de type int et si je fais scanf("%f",&a[i][j]) au lieu de scanf("%f",a+i+j), y a pas de soucis!!
    D'avance merci

  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 badman_nx
    '
    je sèche sur un truc depuis tout à l'heure, je veux lire et afficher une matrice allouée dynamiquement, voilà mon code (qui ne marche pas)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                scanf("%f",a+i+j);
            printf("%5.2f",**a+i+j);
    Ca fout la trouille !

    L'accès aux élément se fait par tab[i][j].
    L'adresse d'un élément est tab[i]+j.
    Pas de Wi-Fi à la maison : CPL

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 62
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Ca fout la trouille !

    L'accès aux élément se fait par tab[i][j].
    L'adresse d'un élément est tab[i]+j.
    Merci pour ta réponse si rapide et qui me répond parfaitement bien
    Voià ça marche
    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
    #include <stdio.h>
    #include <stdlib.h>
     
    float **a;
    int i,j,m,n;
     
    int main()
    {
        printf("Entrer m et n: ");
        scanf("%d%d",&m,&n);
        a=(float **)malloc(m*sizeof(float *));
        for(i=0;i<m;i++)
            a[i]=(float *)malloc(n*sizeof(float));
        for(i=0;i<m;i++)
            for(j=0;j<n;j++)
            {
                printf("Enter the element A[%d][%d] : ",i+1,j+1);
                scanf("%f",a[i]+j);
            }
        for(i=0;i<m;i++)
        {
            for(j=0;j<n;j++)
            printf("%10.2f",a[i][j]);
            printf("\n");
        }
        return 0;
    }
    PS:on peut avoir accés à l'élément par *(*(a+i)+j), c'est pour ça je me suis demandé pourquoi a+i+j ne marche pas comme adresse de l'élément, je dois être à coté de la plaque
    Merci encore cher Emmanuel

  4. #4
    Membre éclairé Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Points : 858
    Points
    858
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    L'adresse d'un élément est tab[i]+j.
    Il n'y a pas une petite erreur là ?
    Software Failure. Press left mouse button to continue.
    Guru Meditation #0100000C.000FE800

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 62
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par crocodilex
    Il n'y a pas une petite erreur là ?
    Nope :p

  6. #6
    Membre éclairé Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Points : 858
    Points
    858
    Par défaut
    Citation Envoyé par crocodilex
    Il n'y a pas une petite erreur là ?
    Ben non, je me suis trompé, désolé.
    Ecrire &tab[i][j] est plus lisible que tab[i]+j (enfin c'est mon avis) !!!!
    Software Failure. Press left mouse button to continue.
    Guru Meditation #0100000C.000FE800

  7. #7
    Membre éclairé Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Points : 858
    Points
    858
    Par défaut
    Au fait, n'oublis pas de libérer la mémoire........
    Software Failure. Press left mouse button to continue.
    Guru Meditation #0100000C.000FE800

  8. #8
    Nouveau membre du Club
    Inscrit en
    Mars 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 62
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par crocodilex
    Au fait, n'oublis pas de libérer la mémoire........
    Merci pour le conseil, j'en ai vraiment besoin

Discussions similaires

  1. Pointeurs double sur struct
    Par weis3r dans le forum C
    Réponses: 7
    Dernier message: 25/02/2009, 03h31
  2. Réponses: 6
    Dernier message: 04/01/2007, 01h30
  3. scanf et les double
    Par vinzzzz dans le forum C
    Réponses: 3
    Dernier message: 08/03/2006, 12h05
  4. double pointeur?
    Par ostralo dans le forum C++
    Réponses: 17
    Dernier message: 23/02/2006, 18h24
  5. Réponses: 3
    Dernier message: 11/08/2005, 15h54

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