Nouveau problème qui n'en ai pas réellement un... c'est plutôt une correction explicative que je recherche... Avis aux amateurs.
Je souhaite écrire un programme qui lit une suite de caractère '0' ou '1' tapés au clavier, dont l'arrêt intervient à la rencontre de EOF ou '\n'. Il affiche une erreur et se termine si le caractère entré est différent de ' 0 ' ou ' 1 '.
Enfin, il affiche les valeurs de la suite de 0 et de 1 lue (si plus de 32 caractères sont lus, les 32 derniers seront affichés) interprété comme entier, comme entier non signé, comme un tableau de 2 entiers courts et comme un flottant.
L'aide indique que :
- x << n renvoie la valeur de x décalée vers la gauche de n bits avec introduction de n bits à 0 à droite.
- x << = n affecte cette valeur décalée à la variable x elle meme.
- prototype de getchar()
-liste des opérateurs bits à bits (& , |, ^ et tilde (désolé je ne le vois pas sur mon clavier US :/))
Mon code :Il y a surement pas mal d'erreurs et je ne vois pas comment utiliser certains points de l'aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 #include <stdio.h> #include <stdlib.h> int main() { int bit; char tabit[32]; int i = 0, cmp = 0; for(i;i<32;i++) { tabit[i]='a';//pour stopper a moins de 32 char } char var; bit = getchar(); var = (char) bit; while (var == '1' || var == '0') { tabit[cmp]= var; cmp++; var = (char)getchar(); if(cmp == 31) { cmp = 0; // au bout de 32 char, on revient au debut } } for(i;i<cmp;i++) { if(tabit[i] == 'a') { return 0; } printf("%c",tabit[i]);//il manque pas mal d affichage je sais mais je souhaite d abord comprendre. } printf("\n"); return 0; }
Merci d'avance.
Partager