mayapour
Messages postés17Date d'inscriptionmercredi 24 novembre 2004StatutMembreDernière intervention12 janvier 2022
-
23 juin 2006 à 11:00
deck_bsd
Messages postés1242Date d'inscriptionjeudi 31 mars 2005StatutMembreDernière intervention 3 août 2016
-
23 juin 2006 à 17:53
Bonjour,
Débutant en C, je souhaiterai savoir comment changer ce programme initiale (liste chainée) qui demande à l'utilisateur de choisir les options selon l'affichage :
1 : ajout dans la liste
2 : suppression dans liste
3 : trie de la liste
4 : affiche la liste
0 : quit programme
Je voudrai que celui-ci lance le programme suivi de l'option puis les paramêtres (selon option choisi).
Par explemple, ./monprog -a elementAajouter (qui correspond à l'option 1)
./monprog -b elementAsupp (qui correspond à l'option 2)
./monprog -c (option 3)
./monprog -d (option 4)
./monprog -q (option 0)
Avez vous des conseils, des exemples, des idées ?
Merci
Voici le code :
#include<stdio.h>
#include<malloc.h>
#define Faux 0
#define Vrai 1
typedef struct Element{
int val;
struct Element *next;
}Element;
mnaulet
Messages postés11Date d'inscriptionvendredi 9 juin 2006StatutMembreDernière intervention27 juin 2006 23 juin 2006 à 11:06
la fonction main peut prendre deux arguments
int main(int argc, char *argv[])
où argc contient le nombre d'argument sur la ligne de commande
et argv est un tableau de chaines contenant les arguments de la ligne de commande
Dans ton cas argv[1]contiendra ton option (a b ou c..)
deck_bsd
Messages postés1242Date d'inscriptionjeudi 31 mars 2005StatutMembreDernière intervention 3 août 20162 23 juin 2006 à 13:54
int main(char ac, char **av)
{
Element *L = NULL;
char choixoption;
char *v;
}
Où fais-tu appel à tes fonctions ???? le main est le point d'entré de ton programme si tu n'appel aucunes fonction, comment veus-tu que ton programme fonctionne? la c'est comme si il ignorai toutes tes autre fonctions. quand tu lance ton programme la seule chose qu'il fait c'est crée les variables :s .
deck_bsd
Messages postés1242Date d'inscriptionjeudi 31 mars 2005StatutMembreDernière intervention 3 août 20162 23 juin 2006 à 14:33
Si je ne me trompe pas ton programme prend 2 argument, un char pour lui dire d'ajouter et autre et un autre contenant la chaine. hors ici priseoption(choixoption,av[2]); tu lui passe le 3ième argument qui soit dit en passant n'exist pas , n'oublie pas que en c si tu a 10 élément dans un tableau ceux-ci sont indexé de 0-9 , donc a la place de av[2] met av[1]. Deplus je comprend pas bien ce que fait ta fonction woptions(ac,&av); .
Je pense que tu te complique énormément la vie.
Il suffit de faire dans le main un if qui vérifie si des argument on été entré en faisant un if de ac (qui contient le nombre d'arguments entré) si il n'y en a pas tu fais appel a ton menu sinon tu transmet les 2 arguments a tes fonctions de la liste chainée.
en fait, que ce soit av[2] ou av[1], le résultat est le même puisqu'il me manquait un paramètre quand j'appelle la fontion "priseoption".
Mais actuellement, tous mes appelles de fonction dans priseoption génèrent l'erreur : makes integer from pointer without a cast pour ajouter
et from incompatible pointer type pour Supprimer, Tier, afficher.
Je ne trouve pas bcp d'info sur le net sur ce type d'erreur.
Merci de m'éclairer...
deck_bsd
Messages postés1242Date d'inscriptionjeudi 31 mars 2005StatutMembreDernière intervention 3 août 20162 23 juin 2006 à 17:53
Le problème vient certainement du passage de paramètre, mais je ne comprend pas pourquoi tu utilise des fonctions pour cela, c'est tellement si simple sens, un if et tous roule.