#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;
}
|