Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2449 connectés 

  FORUM HardWare.fr
  Programmation
  C

  probleme de pointeur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

probleme de pointeur

n°1285227
shreck
Posté le 17-01-2006 à 08:51:03  profilanswer
 

salut a tous, alors voila je suis en train de faire un petit programme en C (je débute)
le but de ce programme et dappliquer un pasque de sous réseau a une adresse
voila mon source :
 
#include <stdio.h>
char octet[8],mask[8],application;
int i;
 
main()
{  
 printf("saisir le masque : \n" );
 scanf(" %s", &mask);
 printf("saisir l'octet : \n " );
 scanf(" %s", &octet);
 application="";
 
  for (i=1;i<=8;i++);
  {  
   if (octet[i]=mask[i])  
    { application = application && "1" ;}
   else
    { application = application && "0" ;}
  }
 return 0;
}
 
 
 
 
et quand je compile, ca me fait cette erreur : " affectation transforme un pointeur en entier sans transtypage"
je comprend pas pourquoi, et les pointeurs je connais pas trop
 
dc si quelqu'un aurai la gentillesse de mexpliquer svp...
merci

mood
Publicité
Posté le 17-01-2006 à 08:51:03  profilanswer
 

n°1285236
ElDje
Hasta liberta, compañeros
Posté le 17-01-2006 à 09:08:16  profilanswer
 

Si j'ai bonne mémoire, les tableau sont DéJà des pointeurs...
 
enlève les "&" dans les scanf!
 
ps: utilise les balise cpp... c'ets beaucoup plus joli et plus simple.
Je n'ai pas de compilateur ici, mais essaie ce code-ci:
 

Code :
  1. #include <stdio.h>
  2. char octet[8],mask[8],application;
  3. int i;
  4. int main(void)
  5. printf("saisir le masque : \n" );
  6. scanf(" %s", mask);
  7. printf("saisir l'octet : \n " );
  8. scanf(" %s", octet);
  9. application="";
  10.   for (i=1;i<=8;i++);
  11.   { 
  12.    if (octet[i]=mask[i]) 
  13.     { application = application && "1" ;}
  14.    else
  15.     { application = application && "0" ;}
  16.   }
  17. return 0;
  18. }

Message cité 1 fois
Message édité par ElDje le 17-01-2006 à 09:11:16
n°1285238
shreck
Posté le 17-01-2006 à 09:10:24  profilanswer
 


 
cest ca :  
 
#include <stdio.h>
char octet[8],mask[8],application;
int i;
 
main()
{  
 while (mask != "0" || mask !="1" )
 { printf("saisir le masque : \n" );
  scanf(" &c", mask);
  printf("saisir l'octet : \n " );
  scanf(" &c", octet);
  application="";
 
   for (i=1;i<=8;i++);
   {  
    if (octet[i]== mask[i])  
     { application = application && '1' ;}
    else
     { application = application && '0' ;}
 }  }
 return 0;
}
 
 
ca marche pas,  

n°1285240
push
/dev/random
Posté le 17-01-2006 à 09:13:23  profilanswer
 

avant de vous faire insulter http://mapage.noos.fr/emdel/inputs.htm

n°1285254
shreck
Posté le 17-01-2006 à 09:27:22  profilanswer
 

jarrive pas ! ! ! tan pis , merci quand meme... je chercherai une autre fois

n°1285260
jimipage
déclarer c'est fatiguant
Posté le 17-01-2006 à 09:51:01  profilanswer
 

ElDje a écrit :

Si j'ai bonne mémoire, les tableau sont DéJà des pointeurs...


 
C'est quoi alors un tableau de pointeurs ? :heink:


---------------
un perlien qui programme salement
n°1285261
jimipage
déclarer c'est fatiguant
Posté le 17-01-2006 à 09:54:40  profilanswer
 

je crois que l'erreur est facile à corriger !!!
les indices des tableaux commencent à 0
donc :
char tab[8];
crée un tableau dont les indices vont de 0 à 7, et non de 1 à 8


---------------
un perlien qui programme salement
n°1285267
theshockwa​ve
I work at a firm named Koslow
Posté le 17-01-2006 à 10:03:47  profilanswer
 

shreck a écrit :

cest ca :  
 

Code :
  1. #include <stdio.h>
  2. char octet[8],mask[8],application;
  3. int i;
  4. main()
  5. {
  6. while (mask != "0" || mask !="1" )
  7. { printf("saisir le masque : \n" );
  8.  scanf(" &c", mask);
  9.  printf("saisir l'octet : \n " );
  10.  scanf(" &c", octet);
  11.  application="";
  12.   for (i=1;i<=8;i++);
  13.   {
  14.    if (octet[i]== mask[i])
  15.     { application = application && '1' ;}
  16.    else
  17.     { application = application && '0' ;}
  18. }  }
  19. return 0;
  20. }


 
 
ca marche pas,


 
pas étonnant ... le formatage pour scanf est invalide ...
tu prévois 8 caractères pour ton masque et ton adresse, qu'est-ce que tu comptes avoir dedans ?
mask != "1" -> ce n'est pas comme ca qu'on compare des chaines en C (on utilise plutôt strcmp par exemple)
ensuite, tu confonds les valeurs numériques avec les caractères (application && '1')
 
au vu de tout ca, je te conseille vivement de te plonger dans un bon livre pour apprendre le C ...

n°1285269
Emmanuel D​elahaye
C is a sharp tool
Posté le 17-01-2006 à 10:06:14  profilanswer
 

shreck a écrit :

salut a tous, alors voila je suis en train de faire un petit programme en C (je débute)
le but de ce programme et d'appliquer un masque de sous réseau a une adresse
voila mon source :


Enormément de fautes. Mes commentaires (-ed-). Pose des questions si tu ne comprends pas.


#include <stdio.h>
 
/* -ed- ajoute pour strcpy() et strcat() */
#include <string.h>
 
/* -ed-
char octet[8],mask[8],application;
int i;
pourquoi des globales ?  */
 
/* -ed-
main()
 
en C99, le type retourne' doit etre explicite */
int main(void)
{
   /* -ed- variables deplacees */
 
   /* -ed-
   char octet[8], mask[8];
 
   Rappel : En C, les chaines de caracteres sont terminees par un 0.
   */
   char octet[8 + 1], mask[8 + 1];
   int i;
 
   /* -ed-
   printf("saisir le masque : \n" );
 
   le ' ' entre le ':' et le '\n' ne sert a rien... */
   printf("saisir le masque :\n" );
 
   /* -ed-
   scanf(" %s", &mask);
 
   Pourquoi & ? "%s" attend l'adresse d'un char.
   mask est l'adresse du premier char du tableau mask.
 
   Utilisation dangereuse de scanf() :
 
   - Pas de controle de la taille saisie
   - Pas de purge
   - Pas de verification de la valeur retournee
 
   Cette fonction est difficile a utiliser correctement.
   Preferer fgets() qui est plus facile a maitriser et a
   utiliser d'une facon sure.
 
   http://mapage.noos.fr/emdel/notes.htm#saisie
   http://mapage.noos.fr/emdel/notes.htm#fichiers
   */
 
   scanf(" %8s", mask);
 
   printf("saisir l'octet :\n" );
   scanf(" %8s", octet);
 
   /* -ed-
   application="";
 
   ERREUR : application est un char et "" est une chaine.
   Les types sont incompatibles.
 
   Si tu veux une chaine de caractere il faut definir une variable de type
   tableau de char suffisamment grand pour y stocker le resultat.
 
   D'autre part, une affectation de chaine se fait avec strcpy() ou une
   fonction derivee.
 
   */
   {
      /* -ed- definition d'un tableau de char pour stocker le resultat... */
      char application[16];
      strcpy (application, "" );
 
      /* -ed-
        for (i=1;i<=8;i++);
 
        Rappel : En C, les indices d'un tableau de taille n vont de 0 a n-1
      */
      for (i = 0; i < 8; i++)
         /* -ed-
                  ;
         ce ';' n'a rien a faire la. Il signifie que la boucle n'a rien a faire,
         ce qui n'est probablement pas ce que tu veux... */
      {
         /* -ed-
            if (octet[i]=mask[i])
 
         Rappel : '=' est l'operateur d'affectation en C.
                 '==' est l'operateur d'egalite...
         */
         if (octet[i] == mask[i])
         {
            /* -ed-
                   application = application && "1" ;
 
            je ne sais pas d'ou tu sort ca, mais je suppose que tu veux
            'concaterer' "0" ou "1". La fonction dediee est
            strcat()... */
            strcat (application, "1" ) ;
         }
         else
         {
            strcat (application, "0" ) ;
         }
      }
      /* -ed- je suppose qu'on veut voir le resultat de nos manipulations
      genetiques... */
      printf("'%s'\n", application);
   }
 
   return 0;
}


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1285331
Sve@r
Posté le 17-01-2006 à 11:40:57  profilanswer
 

shreck a écrit :

salut a tous, alors voila je suis en train de faire un petit programme en C (je débute)
le but de ce programme et dappliquer un pasque de sous réseau a une adresse
voila mon source :
 

Code :
  1. #include <stdio.h>
  2. char octet[8],mask[8],application;
  3. int i;
  4. main()
  5. {
  6. printf("saisir le masque : \n" );
  7. scanf(" %s", &mask);
  8. printf("saisir l'octet : \n " );
  9. scanf(" %s", &octet);
  10. application="";
  11.  for (i=1;i<=8;i++);
  12.  {
  13.   if (octet[i]=mask[i])
  14.    { application = application && "1" ;}
  15.   else
  16.    { application = application && "0" ;}
  17.  }
  18. return 0;
  19. }




 
Hum... si je lis bien ton algo (c'est pas évident car il me faut interpréter tes intentions en fonctions des instructions "aléatoires" que tu as tapées) alors celui-ci implique qu'on saisisse seulement un octet de l'adresse (qui en fait quand-même 4) et que la saisie se fasse en binaire...
 
Commence par bien lire les bouquins de C. Ensuite, pour ton exercice, intéresse-toi à l'opérateur mathématique "&" qui travaille sur chaque bit de ses opérandes =>
Ex: 6 & 5 = 110(2) & 101(2) = 100(2) = 4


Message édité par Sve@r le 17-01-2006 à 11:45:46

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  probleme de pointeur

 

Sujets relatifs
Probleme de pointeurprobleme de pointeur
probleme de pointeurProblème avec pointeur dans une structure
Problème de typage de pointeur de pointeur[MFC/VC++] Problème de pointeur
problème de pointeur sur fonction[C] problème de pointeur
probleme pointeur void alors qu'un cast de char* marche :\probleme avec pointeur sur objet
Plus de sujets relatifs à : probleme de pointeur


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR