Déclaration dynamique

Résolu
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. 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.
    1. Bonjour

      Je n'ai pas regardé en détail, mais déjà il faut écrire sizeof (sans espace) et non pas size of
      1. Contributeur
        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. oui j'ai essayé sans espace mais ça ne marche toujours pas !!!!!
          il n'y a pas une autre solution ????
          1. 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
            1. 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
              1. merci beaucoup fidy pour ces informations ça me serra utile