CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C][Débutant] Structure, scanf

[Realism]
[Realism]
Niveau 4
08 mai 2012 à 20:12:24

Bnojour tout le monde. J'aimerai savoir pourquoi ça ne marche pas. En effet, lors de l'execution, je peux écrire au deuxième scanf mais pas au premier. Merci d'avance :ok:

[...]

typedef struct
{ char genre[12];
char immatriculation[11];
Marque marque;
char modele[21];
int puissance;
char portes;
char couleur[11];
int annee;
} Veh;

void saisie_veh(Veh *vehicule)
{ printf("\nVeuillez entrer le genre du vehicule (voiture, camionnette ou moto) :");
scanf("%c", (*vehicule).genre);
printf("\nVeuillez entrer l'immatriculation du vehicule :");
scanf("%c", (*vehicule).immatriculation);

[...]

Merci d'avance !

[Realism]
[Realism]
Niveau 4
08 mai 2012 à 20:23:46

Problème résolu.

J'ai un autre problème, maintenant :

typedef enum {ALFA_ROMEO, AUDI, BMW, CITROEN, FORD, MERCEDES, OPEL, PEUGEOT, RENAULT, SEAT, VOLKSWAGEN, VOLVO} Marque;

[...]

printf("\nVeuillez entrer la marque du vehicule");
printf("\nLes marques disponibles sont : ALFA_ROMEO, AUDI, BMW, CITROEN, FORD, MERCEDES, OPEL, PEUGEOT, RENAULT, SEAT, VOLKSWAGEN, VOLVO :");
scanf("%s", (*vehicule).marque);

Et là, j'ai un crash.

j3r3mux
j3r3mux
Niveau 10
08 mai 2012 à 20:39:19

Veh * vehicule =(Veh *)malloc(sizeof(Veh));
if(!vehicule) exit(EXIT_FAILURE);
printf("\nVeuillez entrer la marque du vehicule");
printf("\nLes marques disponibles sont : ALFA_ROMEO, AUDI, BMW, CITROEN, FORD, MERCEDES, OPEL, PEUGEOT, RENAULT, SEAT, VOLKSWAGEN, VOLVO :");
scanf("%s", vehicule->marque);

Peut-être ?
Ça serait mieux que tu nous mettes tout ton code.

j3r3mux
j3r3mux
Niveau 10
08 mai 2012 à 20:41:39

Sinon tu sais ce qu'est une enum en c ? Marque != char *

[Realism]
[Realism]
Niveau 4
08 mai 2012 à 20:47:29

j3r3mux Voir le profil de j3r3mux
Posté le 8 mai 2012 à 20:41:39 Avertir un administrateur
Sinon tu sais ce qu'est une enum en c ? Marque != char *

:d) Pas plus que ce que j'ai dans mon cours.

Code :

  1. include <stdio.h>
  2. include <stdlib.h>
  1. define MAX_VEHICULE 12
  2. define MAX_WAGON 20

typedef enum {ALFA_ROMEO, AUDI, BMW, CITROEN, FORD, MERCEDES, OPEL, PEUGEOT, RENAULT, SEAT, VOLKSWAGEN, VOLVO} Marque;

typedef struct
{ char genre[12];
char immatriculation[11];
Marque marque;
char modele[21];
int puissance;
int portes;
char couleur[11];
int annee;
} Veh;

typedef struct
{ Veh *marchandise;
} Wag;

typedef struct
{ Veh *wagon;
} Tra;

void saisie_veh(Veh *vehicule)
{ printf("\nVeuillez entrer le genre du vehicule (voiture, camionnette ou moto) :");
scanf("%s", (*vehicule).genre);
printf("\nVeuillez entrer l'immatriculation du vehicule :");
scanf("%s", (*vehicule).immatriculation);
printf("\nVeuillez entrer la marque du vehicule");
printf("\nLes marques disponibles sont : ALFA_ROMEO, AUDI, BMW, CITROEN, FORD, MERCEDES, OPEL, PEUGEOT, RENAULT, SEAT, VOLKSWAGEN, VOLVO :");
scanf("%s", (*vehicule).marque);
printf("\nVeuillez entrer le modele du vehicule :");
scanf("%s", (*vehicule).modele);
printf("\nVeuillez entrer la puissance du vehicule:");
scanf("%d", (*vehicule).puissance);
if(((*vehicule).genre)!="moto")
{ printf("\nVeuillez entrer le nombre de portes du vehicule :");
scanf("%d", (*vehicule).portes);
}
printf("\nVeuillez entrer la couleur du vehicule :");
scanf("%s", (*vehicule).couleur);
printf("\nVeuillez entrer l'annee du vehicule :");
scanf("%d", (*vehicule).annee);
}

void saisie_wag(Wag *wagon, char nb_wagon)
{ char i;
char nb_vehicule;
do
{
printf("Veuillez entrer le nombre de vehicule pour le wagon %d (entre 1 et %d):", nb_wagon, MAX_VEHICULE);
scanf("%d", &nb_vehicule);
}

while((nb_vehicule<0)&&(nb_vehicule>MAX_VEHICULE+
1));

(*wagon).marchandise=(Veh*)malloc(sizeof(Veh)*nb_
vehicule);
for(i=0; i<nb_vehicule; i++)
{
saisie_veh(&((*wagon).marchandise[i]));
}
free((*wagon).marchandise);
}

void saisie_tra(Tra *train)
{ char i;
char nb_wagon;
do
{
printf("Veuillez entrer le nombre de wagon (entre 1 et %d):", MAX_WAGON);
scanf("%d", &nb_wagon);
}
while((nb_wagon<0)&&(nb_wagon>MAX_VEHICULE+1));

(*train).wagon=(Wag*)malloc(sizeof(Wag)*nb_wagon)
;
for(i=0; i<nb_wagon; i++)
{
saisie_wag(&((*train).wagon[i]), nb_wagon);
}
free((*train).wagon);
}

void main()
{
Tra train_de_marchandise;
saisie_tra(&train_de_marchandise);
}

j3r3mux
j3r3mux
Niveau 10
08 mai 2012 à 21:28:20

Il y a des sites pour poster son code...(pastebin par exemple). Déjà pour que ce soit plus lisible et pour ne pas faire un long post...Sinon c'est où ton problème ?

Adblock_Crack
Adblock_Crack
Niveau 6
08 mai 2012 à 22:10:27

Son problème est à la ligne "scanf("%s", (*vehicule).marque); " ce qui est tout à fait normal parce qu'une énumération n'est pas une chaine de caractère, VOLVO, AUDI, BMW sont juste des nombres, donc a moins de faire une fonction qui pour une chaine de caractère donné renvoie le nombre correspondant je pense pas que ce soit possible.

Alors utilise plutôt des chaines de caractères comme t'as fais pour le reste.

Adblock_Crack
Adblock_Crack
Niveau 6
08 mai 2012 à 22:12:24

Sinon :

"Problème résolu. "

Ça serait aussi bien de dire comment tu as résolu ton problème je pense.

j3r3mux
j3r3mux
Niveau 10
08 mai 2012 à 22:38:08

C'est pour ça je lui ai mis "Marque != char *" et après pour son autre problème j'ai pas envie de decortiquer le code d'où ma demande "Sinon c'est où ton problème ?"

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment