Allocation dynamique avec passage d'arguments avec main
Résolu
bendecha71
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour. J'aimerai bien faire de l'allocation dynamique à partir de valeurs passés en paramètres argv[1], argv[2] etc.
Ici, ce serait pour initialiser un tableau de plusieurs entiers. Le nombre "plusieurs" sera défini par agv1.
Puis, je remplit chaque case de mon tableau par une valeur définie par argv[2].
Voici le code que j'ai fait
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[]){
// Initialise mon tableau d'entier de taille choisie dans le main
int* entier=(int*)calloc(argv[1], sizeof(int));
int i;
// I va de 0 jusqu'à la taille de mon tableau
for(i=0;i<argv[1];i++){
// Mon tableau est rempli par la valeur correspondant à mon deuxième argument
entier[i] = argv[2];
printf("%d\n", entier[i]);
}
//Liberer la mémoire
free(entier);
return 0;
}
Pour l'instant, il m'affiche des warning comme quoi on ne peut pas comparer des pointeurs et des entiers et tj segmentation fault quand j'execute avec des paramètres comme 5 et 3. Tableau de 5 entiers remplis de 3.
NB: J'ai tapé mon code sous linux avec le compilateur GCC.
Si vous aviez une explication sur l'erreur ce serait sympa.
Merci
Ici, ce serait pour initialiser un tableau de plusieurs entiers. Le nombre "plusieurs" sera défini par agv1.
Puis, je remplit chaque case de mon tableau par une valeur définie par argv[2].
Voici le code que j'ai fait
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[]){
// Initialise mon tableau d'entier de taille choisie dans le main
int* entier=(int*)calloc(argv[1], sizeof(int));
int i;
// I va de 0 jusqu'à la taille de mon tableau
for(i=0;i<argv[1];i++){
// Mon tableau est rempli par la valeur correspondant à mon deuxième argument
entier[i] = argv[2];
printf("%d\n", entier[i]);
}
//Liberer la mémoire
free(entier);
return 0;
}
Pour l'instant, il m'affiche des warning comme quoi on ne peut pas comparer des pointeurs et des entiers et tj segmentation fault quand j'execute avec des paramètres comme 5 et 3. Tableau de 5 entiers remplis de 3.
NB: J'ai tapé mon code sous linux avec le compilateur GCC.
Si vous aviez une explication sur l'erreur ce serait sympa.
Merci
A voir également:
- Allocation dynamique avec passage d'arguments avec main
- Tableau croisé dynamique - Guide
- Passage qwerty azerty - Guide
- Exemple tableau croisé dynamique télécharger - Télécharger - Tableur
- Liste déroulante dynamique excel - Guide
- Delai paiement le bon coin remise en main propre - Forum Vos droits sur internet
2 réponses
bonjour,
argv[i] est une chaine de caracteres. Et ce, meme si tu mets un nombre. Il fait donc que tu convertisses la chaine en nombre avec strtol().
Cdlt,
argv[i] est une chaine de caracteres. Et ce, meme si tu mets un nombre. Il fait donc que tu convertisses la chaine en nombre avec strtol().
Cdlt,