> Tous les forums > Forum Autres langages
 [C] Pb utilisation de malloc (débutant)Sujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
siamos1
  Posté le 28/11/2011 @ 17:03 
Aller en bas de la page 
Petit astucien

Bonjour,

je débute en C et je souhaite réaliser un programme dans lequel j'utilise malloc. Fonction que je ne semble pas bien maitriser car lorsque je lance ce programme :

int dim;
double *tab1, *tab2, *tab3;
printf("Vous allez creer T1, qu'elle taille souhaitez vous ? ");
scanf("%d", &dim);
printf("Ecrivez chacun de ses elements : \n");
tab1=malloc(dim*sizeof(double));
tab2=malloc(dim*sizeof(double));
tab3=malloc(dim*sizeof(double));
creation_saisie_tableau(tab1, dim);
afficher_n_premieres_valeurs(tab1, dim);

il n'affiche que des 0 comme valeurs de mon tableau (alors que les foncions "creation_saisie_tableau" et "afficher_n_premieres_valeurs" fonctionnent très bien dans d'autres programmes).

J'ai pourtant chercher sur google et sur le fameux SDZ et je ne vois pas mon erreur.

Petite précision : je peux débugger et lancer le programme, mais lorsque je passe ma souris sur le signe égale entre "tab1" et "malloc(...)" j'ai le message :
"Error : impossible d'assigner une valeur de type "void *" à une entité de type "double *"
(Sous Microsoft Visual c++ 2010 Express)

Merci par avance

Publicité
siamos1
 Posté le 28/11/2011 à 17:15 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
  • Dans le doute que ça vienne de mes fonctions "creation_saisie_tableau" et "afficher_n_premieres_valeurs" je les mets quand même, si ça peut aider quelqu'un à m'aider :)

    void afficher_n_premieres_valeurs(double *tab1[], int n)
    {
    int i;
    for (i=0; i<n; i++)
    {
    printf("Valeur %d du tableau : %d \n", i+1, tab1[i]);
    }
    }



    double creation_saisie_tableau(double *tab, int dim )
    {
    int i;
    double valeur;
    for (i=0;i<dim; i++)
    {
    scanf("%lf",&valeur);
    tab[i]=valeur;
    }
    }
siamos1
 Posté le 28/11/2011 à 17:36 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

J'ai forcé la fonction malloc (ce qui a eu pour effet d'enlever le message lorsque je passe ma souris sur le signe égal)

mais l'erreur persiste toujours : les valeurs de mon tableau reste à 0

Mon programme contient d'autres choses inutiles ici, mais si je pouvais faire tourner le programme équivalent suivant ça résoudrait mon problème :

#include <math.h>
#include <stdio.h>
#include <stdlib.h>

void creation_saisie_tableau(double *tab1, int dim );
void afficher_n_premieres_valeurs(double *tab1, int n);

main()
{
int dim=2;
double *tab1;
tab1=(double*)malloc(dim*sizeof(double));
creation_saisie_tableau(tab1, dim);
afficher_n_premieres_valeurs(tab1, dim);
}

double creation_saisie_tableau(double *tab1, int dim )
{
int i;
double valeur;
for (i=0;i<dim; i++)
{
scanf("%lf",&valeur);
tab[i]=valeur;
}
}

void afficher_n_premieres_valeurs(double *tab1, int n)
{
int i;
for (i=0; i<n; i++)
{
printf("Valeur %d du tableau : %d \n", i+1, tab1[i]);
}
}

siamos1
 Posté le 28/11/2011 à 17:55 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Juste une erreur de déclaration de type de variable ? (%lf dans le printf et non %d)

J'ai honte, mais merci pour le gain de temps, j'aurai pu passer des heures à la chercher !

Merci beaucoup

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
29,99 €SSD Western Digital Green 240 Go à 29,99 €
Valable jusqu'au 19 Janvier

Cdiscount fait une promotion sur le SSD Western Digital Green 240 Go qui passe à 29,99 € livré gratuitement. On le trouve ailleurs à partir de 33 €. Ce SSD à mémoires SLC et TLC offre des vitesses de 540 Mo/s en lecture et 465 Mo/s en écriture.


> Voir l'offre
60,97 €Clé USB 3.1 Sandisk Ultra Luxe 512 Go à 60,97 € livré
Valable jusqu'au 18 Janvier

Amazon Allemagne propose la clé USB Sandisk Ultra Luxe d'une capacité de 512 Go à 55,45 €. Comptez 5,52 € pour la livraison en France soit un total de 60,97 € livré. Cette clé USB 3.1 toute en métal est compatible USB 2.0 et offre de bons débits d'environ 150 Mo/s en lecture et en écriture. Elle inclut le logiciel SanDisk SecureAccess pour un cryptage et une protection par mot de passe de vos données sensibles.


> Voir l'offre
12,54 €Micro clé USB 3.1 Sandisk Ultra Fit 64 Go à 12,54 €
Valable jusqu'au 18 Janvier

Amazon fait une promotion sur la micro clé USB Sandisk Ultra Fit d'une capacité de 64 Go qui passe à 12,54 €. La minuscule taille de cette clé USB va vous permettre de la laisser brancher en permanence sur votre portable, votre TV ou votre autoradio sans qu'elle dépasse de manière disgracieuse. Sa compatibilité USB 3.1 lui permet d'atteindre des débits jusqu'à 130 Mo/s. 


> Voir l'offre

Sujets relatifs
aide débutant sql
quel SGBD apprendre pour debutant ?
Utilisation de fichier .CSV en C++
Utilisation d'un fichier BIN
PowerBatch:pour débutant
probleme d'utilisation logiciel d'anglais EMME
Questions de debutant
Malloc et Free
Utilisation d'états infomaker avec Powerbuilder
besoin d'applications en vb2008 pour debutant
Plus de sujets relatifs à [C] Pb utilisation de malloc (débutant)
 > Tous les forums > Forum Autres langages