[Programmation c] Int commençant par 0

Arkentus -  
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour à tous !

Je suis sur un petit projet personnel, un défi que je me suis lancer, et je suis actuellement bloqué sur un détail qui m'empêche d'avancer.

Dans une partie de mon travail, j'utilise une fonction qui traduit le binaire en IP décimal pointé. Mon soucis c'est que lors de la demande de saisi (ou l'inscription dans le coeur du programme) il ne conserver pas les zéro avant les premiers chiffre...

C'est tout à fait logique certes mais sa m'arrange pas ^^ Alors je voudrais savoir comment faire pour contourné ce soucis.

Exemple de mon problème

int octet1=0
octect 1 = 00110101

et quand je vérifie ma valeur il m'affiche "266350"

tout fonctionne tant que ma valeur commence par 1 telle que 10110101 oû la , la vérification m'affiche le même.

Voilou, je suis à dispo pour tout précision, merci d'avance et bonne journée à tous !

int main()
{	int ip1=0;
	int bit1=01010101;
              ip1=bit1
              printf("%i", ip1);
              system("pause"),
              return 0;
}

2 réponses

fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
Bonjour,
Attention lorsque tu fais : octet=0.....; le compilateur considère que le chiffre est entré en octal (base 8) et non en décimal. Ce qui donne 266305 (et non 266350).

Toi ce que tu veux, c'est que si tu mets 00110101, l'ordinateur t'affiche 53 ?

Cdlt,
0
Arkentus
 
euh non ^^

ce que je souhait c'est entre 00110101 et qu'il conserve cette valeur comme telle.

Parce qu'ensuite je veux l'envoyer dans une fontion qui me la traduit en décimal mais vu qu'il le transforme, ma fonciton comprend plu rien ^^

telle que:

int main()
{ int ip1=0;
int bit1=00110101;
ip1=traduitBit_en_IP (bit1)
printf("%i", ip1);
system("pause"),
return 0;
}

quand je vérifie mes valeur, bin "bit1" vaux 266305 alors que j'aimerai qu'il valent 0010101
0
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
Dans ce cas, il faut que tu passes par une chaîne de caractère.
Par exemple char bit1[9]="00110101";
0
Arkentus
 
Malheureusement,

La fonction est à un retour en "int", il accepte pas l'entree en char
0
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
Je comprends mieux ce que tu veux faire maintenant que j'ai relu.

Si tu fais int bit1=01..., il va considérer que tu rentres le nombre en octal. Tu ne dois donc pas rentrer le 0 devant.
Par contre, mathématiquement, il y est toujours. Donc si tu fais des opérations dessus, c'est comme ci, il y était. Et avec un printf bien fait, tu pourrais forcer l'affichage des 0 devant.

Cdlt,
0