Petit probleme :/

Petit probleme :/ - C - Programmation

Marsh Posté le 21-04-2004 à 18:29:25    

L'ordi apres la recompilation m'indique une erreur avant <!> ???  
 

Code :
  1. //declaration de variables
  2.    //declaration de tableau de caractere noms
  3.    char nom[10][20] ;
  4.    //declaration du pointeur de tableau
  5.    char *pnom ;
  6.    //declaration de nombre de defilement
  7.    int a=0,b=0,c=0 ;
  8.    //test de boucle avec saisie
  9.    while (nom ! strcmp(nom,"fin" ))


Message édité par ombreee le 21-04-2004 à 18:31:52
Reply

Marsh Posté le 21-04-2004 à 18:29:25   

Reply

Marsh Posté le 21-04-2004 à 18:31:38    

ombreee a écrit :

L'ordi apres la recompilation m'indique une erreur avant <!> ???  
 
[cpp]
   //declaration de variables
 
   //declaration de tableau de caractere noms
   char nom[10][20] ;
   //declaration du pointeur de tableau
   char *pnom ;
   //declaration de nombre de defilement
   int a=0,b=0,c=0 ;
 
   //test de boucle avec saisie
 
   while (nom ! strcmp(nom,"fin" ))
[fixed]


while (strcmp(nom,"fin" ) != 0) :D

Reply

Marsh Posté le 21-04-2004 à 18:36:15    

darkoli a écrit :

while (strcmp(nom,"fin" ) != 0) :D


 
no  c'est pas ca  :/  
 

Reply

Marsh Posté le 21-04-2004 à 18:39:12    

ombreee a écrit :

no  c'est pas ca  :/  
 

si c'est ça

Reply

Marsh Posté le 21-04-2004 à 18:44:08    

C'est clair que c'est pas ca:
char nom[10][20];
 
nom, c'est pas un tableau de chars, mais un tableau de tableaux de chars. c'est donc pas utilisable dans un strcmp.  
A+,

Reply

Marsh Posté le 21-04-2004 à 19:31:13    

gilou a écrit :

C'est clair que c'est pas ca:
char nom[10][20];
 
nom, c'est pas un tableau de chars, mais un tableau de tableaux de chars. c'est donc pas utilisable dans un strcmp.  
A+,

Oui mais ce n'est qu'un warning. :D

lapin.c: Dans la fonction « main »:
lapin.c:17: attention : passage de l'argument n°1 de « strcmp » d'un type pointeur incompatible
lap.c:19: attention : passage de l'argument n°1 de « strcmp » d'un type pointeur incompatible

En revanche le ! génère bien une erreur.

lap.c: Dans la fonction « main »:
lap.c:17: error: erreur d'analyse syntaxique before '!' token
lap.c: Hors de toute fonction :
lap.c:21: error: erreur d'analyse syntaxique before numeric constant
lap.c:21: attention : data definition has no type or storage class

Donc en fait il y a deux "erreurs" !
Mais un strcpy(nom, "fin" ); marche mais c'est pas propre.
Voici le tableau que j'obtiens :

f i n  ¿ &#131;  @ 1 &#130;  &#142; ÿ w  ¬ ? 
 ô û ÿ ¿ ? o  @     p z  @
     ô û ÿ ¿     ? ö  @ | 
     &#142; ÿ w  p ü ÿ ¿ X n  @ Ä ü ÿ ¿
 $ ü ÿ ¿ Ð ²  @ ? w  @ /      ^        @
 · ý ÿ ¿ Î å @ 0 ö  @   ö  @ $ ü ÿ ¿
  \  @ 0 ö  @ Ì ü ÿ ¿ D ü ÿ ¿ Ï \  @
   l  @ 5    X n  @ &#128; ü ÿ ¿  º  @
 à &#132;  ì &#150;  X ü ÿ ¿ Ñ &#130;  Ä ü ÿ ¿
 Ì ü ÿ ¿ x ü ÿ ¿ û &#132;  0 ö  @ @ &#133; 

Finalement c'est pas mal d'initialiser ces données. :D


Message édité par darkoli le 21-04-2004 à 19:48:21
Reply

Marsh Posté le 21-04-2004 à 23:08:14    

> Oui mais ce n'est qu'un warning.
Pour une erreur bien reelle. Si le compilo generait une erreur pour toutes les erreurs de prog, y'aurait plus beaucoup de programmes buggés.
 
> En revanche le ! génère bien une erreur.
>>>while (nom ! strcmp(nom,"fin" ))  
bien sur, puisqu'il y a un truc en trop (nom) et que c'est while (strcmp(nom,"fin" )) qui devrait y etre  
(et non pas while (!strcmp(nom,"fin" )) )
 
> Mais un strcpy(nom, "fin" ); marche mais c'est pas propre.  
Non, ca ne marche pas, ca ne fait que compiler. Si ca marchait, ca ferait pas qque chose que tu n'es pas capable de predire.
A+,


Message édité par gilou le 21-04-2004 à 23:11:03
Reply

Marsh Posté le 12-05-2004 à 15:26:08    

il faut taper:
while (nom != strcmp(nom,"fin" ))

Reply

Marsh Posté le 12-05-2004 à 15:27:40    

strcomp n'est pas une variable a deux etats, tu peu pas utiliser not ou ! mais different de !=

Reply

Marsh Posté le 12-05-2004 à 15:35:35    

prog1001 a écrit :

il faut taper:
while (nom != strcmp(nom,"fin" ))

non! tu ne compares pas un pointeur avec un entier, ca n'a pas de sens.
A+,

Reply

Marsh Posté le 12-05-2004 à 15:35:35   

Reply

Marsh Posté le 12-05-2004 à 15:39:25    

non et non !

Reply

Marsh Posté le 13-05-2004 à 10:17:59    

strcmp ca renvoie 0 si les chaines sont identiques et -1 ou 1 si c'est différent donc gilou a raison c'est bien while (strcmp(nom,"fin" )) ^^
 
par contre le strcmp(nom,"fin" ) va pas marcher, nom étant un tableau de tableau de chars...
faudrait mettre strcmp(nom[0],"fin" ) au moins, mais même comme ca ca va bugger car variable po initialisée :D

Reply

Marsh Posté le 13-05-2004 à 11:10:53    

Euh oui, merci pour ta correction, j'avais pas fait gaffe a ce que son nom n'etait pas un pointeur sur une chaine dans vette reponse ci (je l'avais dit dans une autre reponse, mais là, je m'etais focalisé sur une autre erreur)
 
> et -1 ou 1 si c'est différent  
Non, c'est positif ou negatif, mais ca vaut pas necessairement 1 (dans certaines implems, il me semble que ca valait le rang du premier caractere qui etait different entre les deux chaines).
A+,

Reply

Marsh Posté le 13-05-2004 à 12:18:58    

Citation :


non! tu ne compares pas un pointeur avec un entier, ca n'a pas de sens.


 
Désolé j'avais pas fait gaffe à ca.
Ta raison et pourquoi y declare pas :
 
char *nom[20];
 
 :bounce:

Reply

Marsh Posté le 13-05-2004 à 12:37:44    

peut être ça serait bien de faire une petite classe de string pour les débutants : un truc simple, pas compliqué, facile à utiliser (tout dans un .h peut être) ... enfin je sais pas, je me vois pas demander aux débutants de passer aux g_string sachant comment le code est chiadé :D

Reply

Marsh Posté le 13-05-2004 à 13:11:53    

:sol:  
 
Le truc c'est qui nous a meme pas dis le but de son programme, donc pour l'aider c'est chiant.
 
Au fait moi je vais passer sous le nom MK prog car la c'est un pseudo empreinté.
 
 :bounce:


Message édité par prog1001 le 13-05-2004 à 13:14:06
Reply

Marsh Posté le 13-05-2004 à 13:19:12    

Nombre de messages postés :    40  
 
ça va être dure la transition, on est déjà trop habitué

Reply

Marsh Posté le 13-05-2004 à 13:45:20    

ombreee a écrit :


   while (nom ! strcmp(nom,"fin" ))


 
ca serai plutot while (! strcmp(nom,"fin" )),  
comment tu veux que le compilateur comprenne.
 
Tu veux faire quoi exactement.


Message édité par prog1001 le 13-05-2004 à 13:54:01
Reply

Marsh Posté le 13-05-2004 à 14:02:10    

Taz a écrit :

Nombre de messages postés :    40  
 
ça va être dure la transition, on est déjà trop habitué


 
 :lol:  :lol:  :lol:

Reply

Marsh Posté le 13-05-2004 à 15:57:18    

arreter de vous foutre de moi
40 messages c'est rien

Reply

Sujets relatifs:

Leave a Replay

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