Déclaration dynamique

Résolu
mektout khaled Messages postés 21 Statut Membre -  
mektout khaled Messages postés 21 Statut Membre -
bonjour tout le monde
j'ai un problème j'arrive pas a compiler un programme dans dev-c++ il me signale qu'il y a une erreur au niveau de la déclaration dynamique , voici le programme:
#include<stdio.h>
#include<conio.h>
#alloc<alloc.h>

main()
{
char *m;int i,n;
i=0;
printf("donner la taille a réserver");
printf("\n");
scanf("%d",&n);
getchar();
m=(char*)malloc(n*size of(char));
printf("donner une phrase qui ne dépasse pas les n lettre");
printf("\n");
gets(m);
while (m[i]!='\0') i++ ;
printf("sa longueur est %d",i);
getch();
}
SVP
SVP
SVP
aider moi
merci infiniment

7 réponses

  1. juliencolin54 Messages postés 238 Statut Membre 55
     
    Bonjour,

    Est-ce que tu pourrais détailler l'erreur s'il te plaît ?
    D'ailleurs tu n'est pas obligé de faire un cast sur le retour de malloc.

    Cdlt.
    2
  2. Utilisateur anonyme
     
    Bonjour

    Je n'ai pas regardé en détail, mais déjà il faut écrire sizeof (sans espace) et non pas size of
    1
  3. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Bonjour,

    Quelques compléments :

    D'ailleurs malloc.h n'est pas standard. Il faut inclure stdlib.h

    Le prototype de la fonction main() n'est pas main(), mais int main(void)

    m=(char*)malloc(n*size of(char));
    Cast (char*) totalement superflu . Ce n'est pas size of, mais sizeof (char) (qui vaut 1).
    gets(m);
    gets() est obsolète. On utilise plutôt fgets() à la place.
    Et enfin la fonction main() renvoie 0 quand tout s'est bien passé. Donc : return 0; en fin de fonction.

    Après, pour améliorer ton code, tu pourras contrôler le retour des fonctions "critiques".

    Cdlt,
    1
  4. mektout khaled Messages postés 21 Statut Membre
     
    oui j'ai essayé sans espace mais ça ne marche toujours pas !!!!!
    il n'y a pas une autre solution ????
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. mektout khaled Messages postés 21 Statut Membre
     
    le problème c'est que le compilateur me signale qu'il y a une erreur dans la ligne suivante:
    m=(char*)malloc(n*sizeof(char));
    il me l'affiche en rouge !!!!
    il écrit dans les messages d'erreurs :
    invalid preprocessing directive #alloc
    'malloc' undeclared(first use in this function)
    svp aider moi
    merci d'avance
    0
  7. mektout khaled Messages postés 21 Statut Membre
     
    c'est bon j'ai trouver la solution !!!!!!!!!!
    l'erreur était dans la déclaration des bibliothèques car je n'ai pas déclarer la bibliothèque #include<stdlib.h> ou je peut déclarer seulement #include<malloc.h>
    merciiiiiiiiiiiiiiiiiiiiiiii
    0
  8. mektout khaled Messages postés 21 Statut Membre
     
    merci beaucoup fidy pour ces informations ça me serra utile
    0