Je comprends pas pourquoi ça marche pas

Je comprends pas pourquoi ça marche pas - C - Programmation

Marsh Posté le 25-10-2008 à 15:51:40    

Voilà le code compilé avec Dev C++ V5 Beta :
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. struct Personne {
  4.        char nom[50];
  5.        char prenom[60];
  6.        int age;
  7.        };
  8.      
  9. void Initialiser(Personne* point) {
  10.      (*point).nom[] = Dupont;
  11.      (*point).prenom[] = Alain;
  12.      (*point).age = 25;
  13.      }
  14.    
  15. int main(int argc, char *argv[])
  16. {
  17.   Personne individu;
  18.   Initialiser(&individu);
  19.   printf("Vous avez saisie %c %c qui a %d", individu.nom, individu.prenom, individu.age);
  20.   system("PAUSE" );
  21.   return 0;
  22. }


 
Je débute en C et j'ai farfouillé le code dans tout les sens sans trouver ou est l'erreur ... :ouch:


Message édité par seb-info le 25-10-2008 à 15:52:04
Reply

Marsh Posté le 25-10-2008 à 15:51:40   

Reply

Marsh Posté le 25-10-2008 à 15:57:00    

Compiling: C:\Program Files\CodeBlocks\seb\test.c
C:\Program Files\CodeBlocks\seb\test.c: In function `void Initialiser(Personne*)':
C:\Program Files\CodeBlocks\seb\test.c:10: error: expected primary-expression before ']' token
C:\Program Files\CodeBlocks\seb\test.c:10: error: `Dupont' undeclared (first use this function)
C:\Program Files\CodeBlocks\seb\test.c:10: error: (Each undeclared identifier is reported only once for each function it appears in.)
C:\Program Files\CodeBlocks\seb\test.c:11: error: expected primary-expression before ']' token
C:\Program Files\CodeBlocks\seb\test.c:11: error: `Alain' undeclared (first use this function)
C:\Program Files\CodeBlocks\seb\test.c: In function `int main(int, char**)':
C:\Program Files\CodeBlocks\seb\test.c:19: warning: int format, pointer arg (arg 2)
C:\Program Files\CodeBlocks\seb\test.c:19: warning: int format, pointer arg (arg 3)
C:\Program Files\CodeBlocks\seb\test.c:22:2: warning: no newline at end of file
Process terminated with status 1 (0 minutes, 1 seconds)
5 errors, 3 warnings

Reply

Marsh Posté le 25-10-2008 à 16:52:44    

Oui c'est ça. Le truc qui m'embête le plus et qui doit tout bloquer c'est l'erreur sur la fonction. Je comprend pas pourquoi il me dit que j'ai une erreur dans mes arguments. J'ai déclare ma structure, mi la variable individu et point sur le même type et j'initialise point avec &invidiu.
 
Les erreurs je les ai lu et je les comprend pas ...


Message édité par seb-info le 25-10-2008 à 16:57:09
Reply

Marsh Posté le 25-10-2008 à 17:21:55    

Tu es sur que ceci ne te dérange pas plus que ça ?  
 

Code :
  1. (*point).nom[] = Dupont;
  2. (*point).prenom[] = Alain;


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 25-10-2008 à 19:03:26    

Le plus simple c'est de te donner un peu de documentation.
Essaie ici, tu devrais trouver la réponse à tes questions :)
http://mapage.noos.fr/emdel/notes.htm#pointeurs

Reply

Marsh Posté le 26-10-2008 à 01:31:01    

Lui donner une ligne qui marche peut aussi l'éclairer:
(*point).nom[] = Dupont;  
1) il manque les doubles quotes pour indiquer que c'est une chaine
2) On ne peut pas assigner une chaine dans un buffer avec un simple = en dehors d'une déclaration du buffer. Il va falloir faire un appel de fonction pour copier la chaine dans ton buffer.
3) plutot que (*point).nom la pratique courante est de passer par l'écriture moins lourde point->nom
 
strcpy(point->nom, "Dupont" );
 
A+,


Message édité par gilou le 26-10-2008 à 01:41:22

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 30-10-2008 à 20:12:38    

Un truc qui m'etonne c'est qu'il utilise Personne sans "struct", et sans l'utiliser dans un typedef aussi...
Mais je n'ai jamais utilise DevC donc peut etre que le compilateur est plus souple?


---------------
"Phildar t'es vraiment une pute pas finie toi! Et Manu le gros porc arrete de t'marrer!"
Reply

Marsh Posté le 31-10-2008 à 08:42:38    

gee a écrit :

Un truc qui m'etonne c'est qu'il utilise Personne sans "struct", et sans l'utiliser dans un typedef aussi...
Mais je n'ai jamais utilise DevC donc peut etre que le compilateur est plus souple?


C'est parce qu'il programme en C++ et pas en C.

Reply

Marsh Posté le 31-10-2008 à 09:01:42    

gee a écrit :

Un truc qui m'etonne c'est qu'il utilise Personne sans "struct", et sans l'utiliser dans un typedef aussi...

Bien vu!
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 31-10-2008 à 17:38:24    

Tarabiscote a écrit :


C'est parce qu'il programme en C++ et pas en C.


Ah c'est tolere en C++? je ne savais pas :D
Sinon s'il fait du C++ autant virer ses pointeurs pour des references, ca sera plus simple.


---------------
"Phildar t'es vraiment une pute pas finie toi! Et Manu le gros porc arrete de t'marrer!"
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed