(C) une erreur quelque part béte je suppose..

lirycs78 Messages postés 106 Statut Membre -  
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjsoir, jai ce code :

struct chiffre {
long chiffre;
long chiffre2;
}chiffre = {0, 0};

int main()
{
struct chiffre *ptr_chiffre;

puts("Calculette");
puts("Version 1.0");

printf("%ld\n",ptr_chiffre->chiffre);
printf("%ld",ptr_chiffre->chiffre2);

return 0;
}

Donc j'initialise chiffre et chiffre2 a 0 mais le probléme c'est que a l'affichage chiffre = 0 mais chiffre2 = -1
o_O

Merci d'avance

6 réponses

lirycs78 Messages postés 106 Statut Membre 1
 
Probléme regler :

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

struct chiffre {
long chiffre;
long chiffre2;
}chiffre = {2, 0};

int main()
{
struct chiffre *ptr_chiffre;
struct chiffre;

ptr_chiffre = &chiffre;

puts("Calculette");
puts("Version 1.0");

printf("%ld\n",ptr_chiffre->chiffre);
printf("%ld",ptr_chiffre->chiffre2);

return 0;
}

Mais il n'y aurrait pas moyen de faire plus cour ??

struct chiffre *ptr_chiffre;
struct chiffre;

ptr_chiffre = &chiffre;

?? Merci d'avance
0
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
Salut,
Tout simplement :
#include <stdio.h>

struct chiffre {
    long chiffre;
    long chiffre2;
};

int main(void)
{
    struct chiffre chiffre = {2, 0};

    puts("Calculette");
    puts("Version 1.0");

    printf("%ld\n",chiffre.chiffre);
    printf("%ld\n",chiffre.chiffre2);

    return 0;
}

Par ailleurs, il est d'usage de mettre des majuscules pour les noms de structure. Car là, entre struct chiffre, la variable chiffre de type de struct chiffre, et le champs chiffre de la variable chiffre de type struct chiffre, cela complique la compréhension.
Cdlt
0
lirycs78 Messages postés 106 Statut Membre 1
 
thx fiddy comme d'hab merci de ton aide :D

Jai un message d'erreur :

C:\Documents and Settings\helock\Mes documents\C\RepoSite\main.c|26|warning: passing arg 1 of `fgets' makes pointer from integer without a cast|

L'endroit du probléme ( je croit ) :

fgets(ptr_chiffre->chiffre,1,stdin);
puts("Entrez un chiffre : ");
fgets(ptr_chiffre->chiffre2,1,stdin);

Le code entier :

http://rafb.net/p/6NaFtx50.html

Merci !!!!
0
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
Le prototype de fgets est : char *fgets(char *, int, FILE *);
Or toi tu appelles : fgets(int,int,FILE*)
D'où le message d'erreur.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lirycs78 Messages postés 106 Statut Membre 1
 
Yes je vien de voir :/

Donc je doit user une autre fonction :/
0
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
Si tu n'as pas besoin d'une entrée robuste :
Tu peux utiliser scanf("%d",&ptr_chiffre->chiffre);

Sinon, tu devras utiliser char buffer[16]; fgets(buffer,sizeof buffer,stdin); et récupérer avec strtol() le nombre.
Cdlt
0