Ou est le probléme dans mon petit programme
Fermé
yacinebosss
Messages postés
156
Date d'inscription
jeudi 27 décembre 2012
Statut
Membre
Dernière intervention
18 décembre 2021
-
Modifié par yacinebosss le 31/10/2015 à 10:20
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 31 oct. 2015 à 14:16
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 31 oct. 2015 à 14:16
A voir également:
- Ou est le probléme dans mon petit programme
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
- Programme demarrage windows 10 - Guide
- Petit 3 ✓ - Forum Word
- Petit 1 comme ² ✓ - Forum Bureautique
1 réponse
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
31 oct. 2015 à 10:45
31 oct. 2015 à 10:45
Bonjour,
Pas besoin de déclarer le prototype du main dans ton .h.
Dans ta structure personne, tu déclares nom et prenom comme des simples char au lieu de tableau de char ou pointeur sur char (dans ce cas, ne pas oublier l'allocation).
utilisateur.prenom=prenomm;
Bon uniquement si utilisateur.prenom est de type pointeur sur char.
Mais je pense plutôt que ce que tu veux est un tableau de char dans ta structure utilisateur. Et pour recopier prenomm dans utilisateur.prenom, il faut utiliser : strcpy : strcpy(utilisateur.prenom, prenomm); ou mieux strncpy().
printf("Vous vous appelez %s %s", utilisateur.prenom, utilisateur.nom);
N'oublie pas de mettre un '\n' après ta phrase pou forcer l'affichage avant la fin de ton programme.
Cdlt,
Pas besoin de déclarer le prototype du main dans ton .h.
Dans ta structure personne, tu déclares nom et prenom comme des simples char au lieu de tableau de char ou pointeur sur char (dans ce cas, ne pas oublier l'allocation).
utilisateur.prenom=prenomm;
Bon uniquement si utilisateur.prenom est de type pointeur sur char.
Mais je pense plutôt que ce que tu veux est un tableau de char dans ta structure utilisateur. Et pour recopier prenomm dans utilisateur.prenom, il faut utiliser : strcpy : strcpy(utilisateur.prenom, prenomm); ou mieux strncpy().
printf("Vous vous appelez %s %s", utilisateur.prenom, utilisateur.nom);
N'oublie pas de mettre un '\n' après ta phrase pou forcer l'affichage avant la fin de ton programme.
Cdlt,
31 oct. 2015 à 11:42
d'abord merci pour t'a réponse. et ensuite j'ai quelque point d'ombre :
_quand tu dit pointeur sur char . les pointeur ca point sur l'adresse d'une variable pour enchanter la valeur n'est ce pas? . aussi quand tu dit ("utilisateur.prenom=prenomm;
Bon uniquement si utilisateur.prenom est de type pointeur sur char")c'est normalement le contraire car ont veux changer la valeur de utilisateur.prenom mais un pointeur ne peux utiliser des chaîne de caractère . non ?
_mais normalent si en fait ca variable = variable les deux variable auront la meme valeur (bien sure si il sont tout les deux des tableau j'ai bien compris ca ), est si ont utilise utilsateur .prenom comme pointeur il faut alors quand fasse (pointeur = une autre variable)
car les pointeur ca ne stock pas les valeur des valeurs des variable mais leur adresse. n'est ce pas ?
_aussi a quoi bon utilisé strcpy si ont peux juste faire un " = " . non ?
_enfin comment \n peut il bien forcer l'affichage ?
bon j'ai fait des modification sur mon programme dans mon fichier .h (mais ca n'a pas marché):
typedef struct personne personne ;
struct personne
{
char prenom [50];
char nom [50];
};
enfin j'ai une question sur les prototype quand je fait ca :
int main();
int choit equation();
int calcule des valeur de Fx();
int main(..............
int choit equation()........
int calcule des valeur de Fx()....
ca ne veux pas ce compilé . ca me dit qu'il y'a une erreur dans les prototype. pk ?
bon je sais que dans mais questions il y'a beaucoup de chose fausse . dsl :(
Modifié par yacinebosss le 31/10/2015 à 12:44
int main()
{
int choix;
scanf("%s",&choit);
if (choit==1)
{
#define int choir equation()
}
else
{
#define int calcule des valeur de Fx()
}
}
#ifdef int choit equation()
{
printf("quel model de fonction utilisé:");
printf("a.x+b");
printf("a.x.x+b.x+c");
}
#ifdef int calcule des valeur de Fx()
{
printf(".......");
}
et c'est la ou je rencontre le probléme des prototype. et pour les define si c'est pas comme ca qu'on les utilisé c'est juste un test ^^ .
Modifié par yacinebosss le 31/10/2015 à 12:49
utilisateur.nom = nomm; . bon j'ai une derniére question (je sais je pausse trop de question :) ) mais quand je fait ca: scanf("%s", utilisateur.nom); ou ca :scanf("%s",& utilisateur.nom); c la meme chose. pk ?
31 oct. 2015 à 12:49
Oui. Mais tu peux aussi l'utiliser pour stocker des chaînes de caractères. La chaîne ira du 1e caractère jusqu'au caractère final représenté par '\0'. Par exemple : printf("%s", chaine); affichera tous les caractères pointés à partir de l'adresse stockée dans la variable chaine jusqu'au '\0'. (bien pensé à faire de l'allocation. Pa exemple : chaine=malloc(5);
mais normalent si en fait ca variable = variable les deux variable auront la meme valeur (bien sure si il sont tout les deux des tableau j'ai bien compris ca ), est si ont utilise utilsateur .prenom comme pointeur il faut alors quand fasse (pointeur = une autre variable)
car les pointeur ca ne stock pas les valeur des valeurs des variable mais leur adresse. n'est ce pas ?
Sauf que tu ne peux pas utiliser l'opérateur = lorsqu'il s'agit de tableaux...
L'opérateur = permet de recopier un seul type primitif (char, int, ...). Un tableau représente un ensemble de type. Donc, ça ne marchera pas. Dans ce cas, on utilise strcpy() qui recopie tous les caractères jusqu'au '\0'.
enfin comment \n peut il bien forcer l'affichage ?
Car la norme relatif au C le spécifie... Tu peux aussi faire un forçage explicite via : fflush(stdout).
Pour ton programme, je ne l'ai pas lu. Il est incomplet. Poste tout ton code mais merci d'utiliser la balise <code c> lorsque tu postes un code.
Par exemple :
<code c>ici tu mets ton code</code>
Sinon c'est illisible.
Note : je te conseille de lire un tuto car il me semble que bien des notions ne sont pas maîtrisées. Par exemple : https://openclassrooms.com/fr/courses/19980-apprenez-a-programmer-en-c (au moins partie 1 et partie 2).
Modifié par yacinebosss le 31/10/2015 à 13:57
chaine=tableau; ca marche pourquoi mettre chaine=tableau . et en plus j'ai essayé est ca marche pas :s . merci beaucoup je ne tempête plus avec mais question a un autre jour . et je vais continuer mon petit projet de calculé les fonction (math) :) . et je te l'enverrai. :)