Programme en c
Résolu/Fermé
s.rayene
Messages postés
104
Date d'inscription
samedi 8 novembre 2008
Statut
Membre
Dernière intervention
11 février 2010
-
8 janv. 2009 à 21:11
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 9 janv. 2009 à 15:11
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 9 janv. 2009 à 15:11
A voir également:
- Programme en c
- Programme demarrage windows 10 - Guide
- Désinstaller programme windows 10 - Guide
- Mettre en veille un programme - Guide
- Forcer la fermeture d'un programme - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
5 réponses
bizu53
Messages postés
1274
Date d'inscription
samedi 30 août 2008
Statut
Membre
Dernière intervention
21 juin 2015
860
9 janv. 2009 à 00:33
9 janv. 2009 à 00:33
un typedef dans la main() je n'avais jamais vu ça ... enfin bon peut-être que ça marche, je ne teste même pas c'est laid.
Après passage chez l'esthéticien le code devient :
Ce qui marche très bien chez moi ... je ne sais pas pourquoi ton code plante (peut-être le typedef, ou alors l'appel de fonction avant les déclarations), ou alors serait-ce un test avec des strings de plus de 2 caractères ? Tu définis dans la structure titre[3] ce qui veut dire un titre de 2 caractère maximum (idem pour l'auteur).
Après passage chez l'esthéticien le code devient :
#include <stdio.h> #include <conio.h> typedef struct sLivre { int code; char titre[3]; char auteur[3]; int annee; } livre; int main() { livre t[4]; int i; for(i = 0 ; i < 4 ; i++) { printf("entrez le code,le titre,l'auteur et l'annee : "); scanf("%d%s%s%d", &t[i].code, t[i].titre, t[i].auteur, &t[i].annee); } for(i = 0 ; i < 4 ; i++) { printf("%d\t%s\t%s\t%d\n", t[i].code, t[i].titre, t[i].auteur, t[i].annee); } return 0; }
Ce qui marche très bien chez moi ... je ne sais pas pourquoi ton code plante (peut-être le typedef, ou alors l'appel de fonction avant les déclarations), ou alors serait-ce un test avec des strings de plus de 2 caractères ? Tu définis dans la structure titre[3] ce qui veut dire un titre de 2 caractère maximum (idem pour l'auteur).
bizu53
Messages postés
1274
Date d'inscription
samedi 30 août 2008
Statut
Membre
Dernière intervention
21 juin 2015
860
8 janv. 2009 à 21:26
8 janv. 2009 à 21:26
Comment pourrait-on t'aider sans pouvoir en trouver la raison ? Sans ton code ça risque d'être difficile... pour ne pas dire impossible.
Peut-être un scanf("%d", &variable); ce qui fonctionne avec des nombres mais pas avec un string ?
C'est impossible de te répondre sans code ... merci de le copier colller
Peut-être un scanf("%d", &variable); ce qui fonctionne avec des nombres mais pas avec un string ?
C'est impossible de te répondre sans code ... merci de le copier colller
s.rayene
Messages postés
104
Date d'inscription
samedi 8 novembre 2008
Statut
Membre
Dernière intervention
11 février 2010
1
8 janv. 2009 à 21:28
8 janv. 2009 à 21:28
merci de m'avoir répondu mais voila le code:
#include<stdio.h>
#include<conio.h>
void main()
{
clrscr();
typedef struct livre
{int code;
char titre[3];
char auteur[3];
int annee;
};
livre t [4];
int i;
for (i=0;i<4;i++)
{ printf("entrez le code,le titre,lauteur et lannee");
scanf("%d%s%s%d\n",&t[i].code,t[i].titre,t[i].auteur,&t[i].annee);
}
for(i=0;i<4;i++)
printf("%d\t%s\t%s\t%d\n",t[i].code,t[i].titre,t[i].auteur,t[i].annee);
getch();
}
#include<stdio.h>
#include<conio.h>
void main()
{
clrscr();
typedef struct livre
{int code;
char titre[3];
char auteur[3];
int annee;
};
livre t [4];
int i;
for (i=0;i<4;i++)
{ printf("entrez le code,le titre,lauteur et lannee");
scanf("%d%s%s%d\n",&t[i].code,t[i].titre,t[i].auteur,&t[i].annee);
}
for(i=0;i<4;i++)
printf("%d\t%s\t%s\t%d\n",t[i].code,t[i].titre,t[i].auteur,t[i].annee);
getch();
}
loupius
>
s.rayene
Messages postés
104
Date d'inscription
samedi 8 novembre 2008
Statut
Membre
Dernière intervention
11 février 2010
8 janv. 2009 à 21:55
8 janv. 2009 à 21:55
Tiens, c'est curieux j'ai déjà vu le même programme il y a quelque temps, son intitulé était:
---> verifiez mon programme en "c"
---> verifiez mon programme en "c"
caty
>
s.rayene
Messages postés
104
Date d'inscription
samedi 8 novembre 2008
Statut
Membre
Dernière intervention
11 février 2010
8 janv. 2009 à 22:07
8 janv. 2009 à 22:07
pour for(i=0;i<3;i++) pars que ta commencer de 0
togodo
Messages postés
148
Date d'inscription
vendredi 19 septembre 2008
Statut
Membre
Dernière intervention
19 août 2009
8
>
loupius
8 janv. 2009 à 22:19
8 janv. 2009 à 22:19
oups la fatigue XD
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 843
9 janv. 2009 à 02:15
9 janv. 2009 à 02:15
Son code ne marche pas tout simplement car il n'a pas précisé le typedef lors de la définition de la struct.
typedef struct livre { ....} livre;
Comme l'a dit bizu53, c'est plus joli de le mettre hors de la fonction, bien que cela ne soit pas obligatoire.
Sinon le prototype de main est int main(void) et non void main(void).
Cdlt
typedef struct livre { ....} livre;
Comme l'a dit bizu53, c'est plus joli de le mettre hors de la fonction, bien que cela ne soit pas obligatoire.
Sinon le prototype de main est int main(void) et non void main(void).
Cdlt
s.rayene
Messages postés
104
Date d'inscription
samedi 8 novembre 2008
Statut
Membre
Dernière intervention
11 février 2010
1
9 janv. 2009 à 14:23
9 janv. 2009 à 14:23
pour koi return o?
et pourkoi le slivre?
et pourkoi le slivre?
bizu53
Messages postés
1274
Date d'inscription
samedi 30 août 2008
Statut
Membre
Dernière intervention
21 juin 2015
860
9 janv. 2009 à 14:42
9 janv. 2009 à 14:42
return 0; ou n'importe quel autre nombre ... parce que la main() doit retourner un entier.
J'ai mis sLivre mais tu mets ce que tu veux ... c'est ma convention d'écriture à moi pour distinguer rapidement le type "structé" (struct sLivre) du type non "structé" (livre)
J'ai mis sLivre mais tu mets ce que tu veux ... c'est ma convention d'écriture à moi pour distinguer rapidement le type "structé" (struct sLivre) du type non "structé" (livre)
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 843
>
bizu53
Messages postés
1274
Date d'inscription
samedi 30 août 2008
Statut
Membre
Dernière intervention
21 juin 2015
9 janv. 2009 à 14:45
9 janv. 2009 à 14:45
Non, return 0; (valeur de EXIT_SUCCESS) quand ça retourne sans erreur ou 1 (EXIT_FAILURE). ;)
s.rayene
Messages postés
104
Date d'inscription
samedi 8 novembre 2008
Statut
Membre
Dernière intervention
11 février 2010
1
>
bizu53
Messages postés
1274
Date d'inscription
samedi 30 août 2008
Statut
Membre
Dernière intervention
21 juin 2015
9 janv. 2009 à 14:48
9 janv. 2009 à 14:48
j'ai compri pr le "o" mais pa vrément pr le "slivre".........commeme j'ai essayé mais ça ne marché pa en execution quand je fé entré des strings je ne sé pa pr koi ?
tous se mélange
tous se mélange
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
s.rayene
Messages postés
104
Date d'inscription
samedi 8 novembre 2008
Statut
Membre
Dernière intervention
11 février 2010
1
9 janv. 2009 à 14:57
9 janv. 2009 à 14:57
répondez moi svp?!!!!!!!!!!!!
bizu53
Messages postés
1274
Date d'inscription
samedi 30 août 2008
Statut
Membre
Dernière intervention
21 juin 2015
860
9 janv. 2009 à 15:10
9 janv. 2009 à 15:10
Il n'y a rien à comprendre pour le sLivre ... tu l'appelles comme tu veux !
Et pour tes problèmes de fonctionnement je suis sûr que c'est ce que j'ai dit dans mon autre post.
Qu'essayes-tu ? Écris ce que tu entres au clavier dans le scanf();
Et pour tes problèmes de fonctionnement je suis sûr que c'est ce que j'ai dit dans mon autre post.
Qu'essayes-tu ? Écris ce que tu entres au clavier dans le scanf();
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 843
9 janv. 2009 à 15:11
9 janv. 2009 à 15:11
Ce n'est pas return o; mais return 0; (un zéro).
Sinon, quand tu utilises struct, pour la création de structure, tu dois mettre un nom. Tu donnes celui que tu veux, Toto par exemple.
Dans ce cas là, tu devras utiliser struct Toto livre; pour déclarer une variable. Pour éviter de répéter le mot-clé struct, on utilise souvent le mot-clé typedef.
Ce qui donne :
Comme ça, tu as juste à écrire : Livre livre; au lieu de struct Toto livre
Conventionnellement, on utilise une majuscule à la première lettre du nom de la structure comme Livre (et non livre).
Sinon, le programme que t'a donné bizu53 est parfaitement correct. Si ça bug, c'est que tu dois sûrement rentrer des chaînes trop grandes. Et comme tu n'as pas utiliser fgets mais scanf("%s"); ça plantera facilement.
Cdlt
Sinon, quand tu utilises struct, pour la création de structure, tu dois mettre un nom. Tu donnes celui que tu veux, Toto par exemple.
struct Toto { ... }
Dans ce cas là, tu devras utiliser struct Toto livre; pour déclarer une variable. Pour éviter de répéter le mot-clé struct, on utilise souvent le mot-clé typedef.
Ce qui donne :
typedef struct Toto { ... } Livre;
Comme ça, tu as juste à écrire : Livre livre; au lieu de struct Toto livre
Conventionnellement, on utilise une majuscule à la première lettre du nom de la structure comme Livre (et non livre).
Sinon, le programme que t'a donné bizu53 est parfaitement correct. Si ça bug, c'est que tu dois sûrement rentrer des chaînes trop grandes. Et comme tu n'as pas utiliser fgets mais scanf("%s"); ça plantera facilement.
Cdlt