Pb avec variable char

Signaler
Messages postés
54
Date d'inscription
vendredi 22 octobre 2004
Statut
Membre
Dernière intervention
21 novembre 2008
-
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
-
voila j'utilise des variables de type char. je l'initialise de la maniere suivante :

char tab[256];

Mon probleme est que j'aimerais initialiser le tableau de caractere a l'aide d'un variable de type int, mais je n'y arrive pas.

19 réponses

Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Excuse moi, mais tu veux dire quoi par la ? Initialiser un char avec un int ? bas c plus un char alors :)
Ou alors c'est de ca que tu parles: char test[5]="12";
Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
21
houlà .. 'comprends pas non plus ce que tu veux faire ...

Manu
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Salut,
Le problème avec les variables char c'est qu'elles sont signées (-128 à 127). Si tu veux des entiers non signés tu peux utiliser les "unsigned char" mais moi je préfère les BYTE (0 à 255). Tu les déclares ainsi:
unsigned char tab[256];
ou
BYTE tab[256];
J'espère que c'est ce que tu cherches.
Messages postés
54
Date d'inscription
vendredi 22 octobre 2004
Statut
Membre
Dernière intervention
21 novembre 2008

voila j'aimerais faire un truc comme ca :

int taille;
taille = sizeof(toto); // toto peut etre de n'importe quel type

char tab[taille];

voila j'espere que je suis plus clair la. C'est quelquechose comme ca que je voidrais mais je n'y arrive pas.
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
2
Salut,
Faut passer par une allocation dynamique alors, avec malloc() et free() par exemple.
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
ou bien mettre taille en const int
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Il me semble pas, ce que tu veux faire ne pose pas de problème.
En tout cas, je l'utilise abondament comme tu le fais, sauf je ce ne sont pas des char dans mon cas.
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
int taille=4;
char tab[taille];


ne devrait pas marcher
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
"ou bien mettre taille en const int " << FAUX !

Ca ne marchera pas, il faut faire un DEFINE ou encore utiliser l'alloc dynamik, un const int n'a pas valeur de constantes en C.
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Essaie d'oublier les concepts de vrai et de faux... Ca dépend visiblement du compilo, gcc l'accepte, et je trouve cela normal
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
Nan bah nan, la norme ANSI dit ke c faux, donc ca devrait l'etre pour tt les compilos..Ah la la, le monde serait mieux si les compilos etaient les mm pour tous !
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
ON NE DECLARES PAS UN TABLEAU AVEC UNE VARIABLE, ON SE SERT D'UN POINTEUR !!!
char *chaine;
chaine=malloc(100*sizeof(char)) //je ne suis pas très sur...
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Pas très sur de quoi?
besoin d'un cast en C++, c'est tout
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
char *chaine;
chaine = (char *)malloc((taille_de_la_chaie_desiree)*sizeof(char)+1);
voila pour être précis...
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Devant les désaccord :)
Sur le net, de toute facon, il est dit clairement que dans le cadre du C++, c'est la fonction new qu'on utilise dorénavent.
On a donc char* p = new char[x];

Mais c'est vrai que je suis étonné que char p[x] marche correctement sur mes programmes, puisque finalement, ca n'a pas de sens.
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Salut,
AlexMAN >> L'exemple suivant marche sans problème sur Visual C++ 6:
int const nombre=3;
char tab[nombre];
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
En fait ca marche si on compile en mode C++, mais pas en C.
Messages postés
54
Date d'inscription
vendredi 22 octobre 2004
Statut
Membre
Dernière intervention
21 novembre 2008

Merci de vous avoir autant interesse a mon cas. Mais je ne veut pas mettre de constante comme valeur d'initialisation du char. La valeur d'initialisation et la taille d'un fichier que je seletionne et que je charge une fois que le programme est lance. Je n'ai donc pas acces a cette donnee avant de compiler, c'est pour ca que je veut l'initialiser avec une variable.
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
dans ce cas les pointeru sont les meileurs choix