Programme en c
Résolu
s.rayene
Messages postés
104
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,
svp aidez moi je ne sé pas ce qu'il arrive avec mon programme en c : mon programme travail avec les tableau d'enregistrements(livre) et mon probleme c'est que a chaque fois en faisant la saisie , a chaque fois que je tape un string tous se melange dans mon programme et je ne sais pas pour quoi? car kan je fé entré des nbr ça s'execute normalement?..............aidez moi svp
svp aidez moi je ne sé pas ce qu'il arrive avec mon programme en c : mon programme travail avec les tableau d'enregistrements(livre) et mon probleme c'est que a chaque fois en faisant la saisie , a chaque fois que je tape un string tous se melange dans mon programme et je ne sais pas pour quoi? car kan je fé entré des nbr ça s'execute normalement?..............aidez moi svp
A voir également:
- Programme en c
- Programme demarrage windows - Guide
- Mettre en veille un programme - Guide
- Message programmé iphone - Guide
- Programme word gratuit - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
5 réponses
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).
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
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();
}
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
pour koi return o?
et pourkoi le slivre?
et pourkoi le slivre?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
répondez moi svp?!!!!!!!!!!!!
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