Se compile mais ne fonctionne pas
Résolu/Fermé
pépereF
Messages postés
36
Date d'inscription
dimanche 11 décembre 2005
Statut
Membre
Dernière intervention
25 janvier 2008
-
4 avril 2007 à 16:23
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 7 avril 2007 à 14:51
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 7 avril 2007 à 14:51
A voir également:
- Se compile mais ne fonctionne pas
- Java est un langage compilé ou interprété ✓ - Forum Programmation
- Erreur automation référence future non valide ou référence à un type non compilé - Forum VB / VBA
- Compilé ou interprété - Forum Programmation
- Java langage compilé ou interprété - Forum PHP
- Logiciel recompile et compile tar md5 - Forum récupération de données
6 réponses
mamiemando
Messages postés
33535
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
12 février 2025
7 828
4 avril 2007 à 22:36
4 avril 2007 à 22:36
Ben ça veut rien dire ce que tu as écrit:-)
a) Ta boucle while(1) ne s'arrêtera jamais :p
b) Ton printf est sensé afficher la valeur d'une variable. Exemple :
Si par exemple tu veux afficher le contenu de car[] :
Bonne chance
a) Ta boucle while(1) ne s'arrêtera jamais :p
b) Ton printf est sensé afficher la valeur d'une variable. Exemple :
int monint = 69; char monchar = 'x'; float monfloat = 6.9; printf("%d",monint); printf("%c",monchar) printf("%lf",monfloat);
Si par exemple tu veux afficher le contenu de car[] :
int i; for(i=0;i<10;++i) printf("%d ",car[i]);
Bonne chance
mamiemando
Messages postés
33535
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
12 février 2025
7 828
6 avril 2007 à 21:14
6 avril 2007 à 21:14
A ce moment là c'est juste le format d'affichage qui change :
donne :
Bonne chance
#include <stdio.h> int main(){ unsigned int i; for(i=0;i<16;++i) printf(" i (base 10) = %d\ti (base 16) = %x\n",i,i); return 0; }
donne :
i (base 10) = 0 i (base 16) = 0 ... i (base 10) = 7 i (base 16) = 7 i (base 10) = 8 i (base 16) = 8 i (base 10) = 9 i (base 16) = 9 i (base 10) = 10 i (base 16) = a i (base 10) = 11 i (base 16) = b i (base 10) = 12 i (base 16) = c i (base 10) = 13 i (base 16) = d i (base 10) = 14 i (base 16) = e i (base 10) = 15 i (base 16) = f
Bonne chance
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
6 avril 2007 à 22:01
6 avril 2007 à 22:01
Salut,
voici une possibilité
voici une possibilité
#include <stdio.h> int main () { char s[20]; int i, nb, quotient, reste, base = 16; i = 0; quotient = 1; printf ("Entrez un entier : "); scanf ("%d", &nb); while (quotient != 0){ quotient = nb / base; reste = nb % base; nb = quotient; if (reste >= 0 && reste <= 9) s[i++] = reste + '0'; else s[i++] = reste + 55; } s[i] = '\0'; for (; i >= 0; --i) printf ("%c", s[i]); printf ("\n"); return 0; }
pépereF
Messages postés
36
Date d'inscription
dimanche 11 décembre 2005
Statut
Membre
Dernière intervention
25 janvier 2008
2
7 avril 2007 à 11:53
7 avril 2007 à 11:53
merci ça marche,
pourriez vous me commenter cette partie?
if (reste >= 0 && reste <= 9)
s[i++] = reste + '0';
else
s[i++] = reste + 55;
ainsi que celle-ci?
s[i] = '\0';
car je ne comprend pas pourquoi reste +55
et que signifie '\0'
et merci encore
pourriez vous me commenter cette partie?
if (reste >= 0 && reste <= 9)
s[i++] = reste + '0';
else
s[i++] = reste + 55;
ainsi que celle-ci?
s[i] = '\0';
car je ne comprend pas pourquoi reste +55
et que signifie '\0'
et merci encore
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
7 avril 2007 à 12:10
7 avril 2007 à 12:10
Salut,
s[i++] = reste + '0';
si le reste est 0,1,.....,9
alors comme je stocke dans un tableau de caractères je dois ajouter '0' qui corespond au code ascii de caractère 0, c'est à dire 48
0 + '0' = 0 + 48 = 48 donc j'ai le caractère 0
1 + '0' = 1 + 48 = 49 donc j'ai le carctère 1
.
.
9 + '0' = 9 + 48 = 57 donc j'ai le caractère 9
s[i++] = reste + 55;
de même pour les restes de 10 à 15
Pour répresentation hexa j'ai besoin de caractères A, B, C, D, E, F
Leur code ascii est
A - 65; B - 66; C - 67; D - 68; E - 69; F - 70
Donc pour obtenir leur code ascii je dois additionner 55
10 + 55 = 65
11 + 55 = 66
12 + 55 = 67
13 + 55 = 68
14 + 55 = 69
15 + 55 = 70
s[i] = '\0';
Une chaîne de caractères, qui en C est un tableau de caractères se fini avec le caractèr '\0'
c'est pour ça qu'après la dernière incrementation de i je suis arrivé à la fin
l'ajout de '\0' dans la position i signifie la fin de la chaîne.
s[i++] = reste + '0';
si le reste est 0,1,.....,9
alors comme je stocke dans un tableau de caractères je dois ajouter '0' qui corespond au code ascii de caractère 0, c'est à dire 48
0 + '0' = 0 + 48 = 48 donc j'ai le caractère 0
1 + '0' = 1 + 48 = 49 donc j'ai le carctère 1
.
.
9 + '0' = 9 + 48 = 57 donc j'ai le caractère 9
s[i++] = reste + 55;
de même pour les restes de 10 à 15
Pour répresentation hexa j'ai besoin de caractères A, B, C, D, E, F
Leur code ascii est
A - 65; B - 66; C - 67; D - 68; E - 69; F - 70
Donc pour obtenir leur code ascii je dois additionner 55
10 + 55 = 65
11 + 55 = 66
12 + 55 = 67
13 + 55 = 68
14 + 55 = 69
15 + 55 = 70
s[i] = '\0';
Une chaîne de caractères, qui en C est un tableau de caractères se fini avec le caractèr '\0'
c'est pour ça qu'après la dernière incrementation de i je suis arrivé à la fin
l'ajout de '\0' dans la position i signifie la fin de la chaîne.
char c; c = 65; printf("%c\n", c);va afficher A et pas 65,en revanche
char c; c = 65; printf("%d\n", c);va afficher 65
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
7 avril 2007 à 14:51
7 avril 2007 à 14:51
En fait je crois que cet exemple est suffisant
lami20j@debian:~/trash$ cat ccm.c #include<stdio.h> int main () { int i; char s[] = "salut"; for (i = 0; i <= 9; ++i) printf ("reste %2d -> caractère %c\n", i, i + '0'); for (i = 10; i <= 15; ++i) printf ("reste %d -> caractère %c\n", i, i + 55); for(i=0;s[i] != '\0';++i) printf("caractère %d = %c\n",i,s[i]); printf("caractère %d = %d(code ASCII du caractère NUL)\n",i,s[i]); return 0; } lami20j@debian:~/trash$ ./ccm reste 0 -> caractère 0 reste 1 -> caractère 1 reste 2 -> caractère 2 reste 3 -> caractère 3 reste 4 -> caractère 4 reste 5 -> caractère 5 reste 6 -> caractère 6 reste 7 -> caractère 7 reste 8 -> caractère 8 reste 9 -> caractère 9 reste 10 -> caractère A reste 11 -> caractère B reste 12 -> caractère C reste 13 -> caractère D reste 14 -> caractère E reste 15 -> caractère F caractère 0 = s caractère 1 = a caractère 2 = l caractère 3 = u caractère 4 = t caractère 5 = 0(code ASCII du caractère NUL)
6 avril 2007 à 15:19
merci