[c] allocation dynamique de tableau
Résolu/Fermé
factor
-
21 juin 2011 à 16:48
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 22 juin 2011 à 08:35
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 22 juin 2011 à 08:35
A voir également:
- [c] allocation dynamique de tableau
- Tableau croisé dynamique - Guide
- Tableau word - Guide
- Tableau ascii - Guide
- Trier tableau excel - Guide
- Liste déroulante dynamique excel - Guide
2 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
21 juin 2011 à 19:31
21 juin 2011 à 19:31
Bonjour,
Dans les printf/scanf, ce n'est pas "/d" qu'il faut mettre mais "%d".
Sinon quelques remarques :
Pourquoi mettre size+1 et non size ? Il n'y a pas besoin de (int *) devant.
Il vaut mieux déclarer (int i) en dehors. Même si c'est accepté avec la norme ISO C99, ce n'est pas trop dans l'esprit du C. De plus tous les compilateurs ne sont pas conformes entièrement au ISO C99 et tu perdrais donc de la portabilité.
Et enfin, tu as oublié free(fichier.tab); à la fin du main (juste avant le system("pause");).
Dans les printf/scanf, ce n'est pas "/d" qu'il faut mettre mais "%d".
Sinon quelques remarques :
fichier.tab=(int*) malloc((size+1)*sizeof(int));
Pourquoi mettre size+1 et non size ? Il n'y a pas besoin de (int *) devant.
for(int i=0; i<size; i++)
Il vaut mieux déclarer (int i) en dehors. Même si c'est accepté avec la norme ISO C99, ce n'est pas trop dans l'esprit du C. De plus tous les compilateurs ne sont pas conformes entièrement au ISO C99 et tu perdrais donc de la portabilité.
Et enfin, tu as oublié free(fichier.tab); à la fin du main (juste avant le system("pause");).
Bonsoir,
merci tout fonctionne, l'erreur était tellement bête ^^
sinon je met le (int *), car sinon le compilateur ne fonctionne pas : error C2440: '=' : impossible de convertir de 'void *' en 'int *'
La conversion de 'void*' en pointeur vers non 'void' nécessite un cast explicite.
C'est mon prof de C qui m'a fait mettre celà.
encore merci bonne soirée
merci tout fonctionne, l'erreur était tellement bête ^^
sinon je met le (int *), car sinon le compilateur ne fonctionne pas : error C2440: '=' : impossible de convertir de 'void *' en 'int *'
La conversion de 'void*' en pointeur vers non 'void' nécessite un cast explicite.
C'est mon prof de C qui m'a fait mettre celà.
encore merci bonne soirée
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
22 juin 2011 à 00:13
22 juin 2011 à 00:13
oO. C'est quoi comme compilateur ???
A mon avis, ce n'est pas un compilateur C mais C++ que tu utilises. Car en C, le cast void * en int * c'est implicite. Et donc il n'y en a pas besoin.du cast.
Les profs de C ont la facheuse tendance de dire qu'il faut caster car avant (version K&R) c'était obligatoire (le void * n'existait pas). Mais depuis la version ANSI, le cast est superflu. Il est même conseillé de ne pas le mettre (à moins de vouloir assurer une rétrocompatibilité).
Mais le principal est que ça marche.
Cdlt,
A mon avis, ce n'est pas un compilateur C mais C++ que tu utilises. Car en C, le cast void * en int * c'est implicite. Et donc il n'y en a pas besoin.du cast.
Les profs de C ont la facheuse tendance de dire qu'il faut caster car avant (version K&R) c'était obligatoire (le void * n'existait pas). Mais depuis la version ANSI, le cast est superflu. Il est même conseillé de ne pas le mettre (à moins de vouloir assurer une rétrocompatibilité).
Mais le principal est que ça marche.
Cdlt,
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
22 juin 2011 à 08:35
22 juin 2011 à 08:35
Oui .cpp c'est pour du C++, donc ton compilateur traitera le fichier comme un code C++.
D'où le message d'erreur. Avec un compilateur C (mettre le fichier .c suffit peut-être), tu n'auras pas message d'erreur (ni de warning) si tu ne castes pas.
D'où le message d'erreur. Avec un compilateur C (mettre le fichier .c suffit peut-être), tu n'auras pas message d'erreur (ni de warning) si tu ne castes pas.