Déclaration dynamique

Résolu/Fermé
mektout khaled Messages postés 15 Date d'inscription mardi 30 juillet 2013 Statut Membre Dernière intervention 12 juillet 2016 - 1 août 2013 à 13:17
mektout khaled Messages postés 15 Date d'inscription mardi 30 juillet 2013 Statut Membre Dernière intervention 12 juillet 2016 - 1 août 2013 à 17:56
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 dimanche 22 juillet 2012 Statut Membre Dernière intervention 1 octobre 2013 55
1 août 2013 à 15:38
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
1 août 2013 à 14:08
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
1 août 2013 à 17:21
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 mardi 30 juillet 2013 Statut Membre Dernière intervention 12 juillet 2016
1 août 2013 à 14:59
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 mardi 30 juillet 2013 Statut Membre Dernière intervention 12 juillet 2016
1 août 2013 à 15:46
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 mardi 30 juillet 2013 Statut Membre Dernière intervention 12 juillet 2016
1 août 2013 à 16:17
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 mardi 30 juillet 2013 Statut Membre Dernière intervention 12 juillet 2016
1 août 2013 à 17:56
merci beaucoup fidy pour ces informations ça me serra utile
0