Déclaration dynamique

Résolu
mektout khaled Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   -  
mektout khaled Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   -
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

juliencolin54 Messages postés 217 Date d'inscription   Statut Membre Dernière intervention   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
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
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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
mektout khaled Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
oui j'ai essayé sans espace mais ça ne marche toujours pas !!!!!
il n'y a pas une autre solution ????
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mektout khaled Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
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
mektout khaled Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
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
mektout khaled Messages postés 15 Date d'inscription   Statut Membre Dernière intervention  
 
merci beaucoup fidy pour ces informations ça me serra utile
0