Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Initialisation d'un tableau de char par une chaine constante

42 réponses
Avatar
candide
Bonjour,

Les déclaration (de portée une fonction) suivantes :

char t1[100]={0};

et

char t2[100]="0";

initialisent-elles les tableaux de la même façon ?

Il est clair que la valeur de chaque élément de t1 est 0 et que la valeur du
premier élément de t2 aussi mais peut-on dire plus concernant t2 ?

De son côté la Norme dit :

An array of character type may be initialized by a character string literal,
optionally enclosed in braces. Successive characters of the character string
literal (including the terminating null character if there is room or if the
array is of unknown size) initialize the elements of the array.

et l'initialisation y est définie par :

An initializer specifies the initial value stored in an object.

(ce que je trouve assez peu précis).

Merci

2 réponses

1 2 3 4 5
Avatar
Antoine Leca
Le 21/08/2009 8:37, emmanuel.delahaye écrivit :
%x et %d vont toujours afficher une valeur numérique si le type est
unsigned int (%x) ou int (%d).

"%c" affichera un glyphe si il existe, sinon, il n'affichera rien (à
ne pas confondre avec 'espace')



Si: la spécification %c va faire d'abord une conversion (masque avec
UCHAR_MAX), puis va émettre le caractère correspondant.

Ainsi, sur une machine « classique »,
printf("%cn", 0100040);
devrait écrire un espace.



Antoine
Avatar
Antoine Leca
Le 21/08/2009 16:05, Éric Lévénez écrivit :
Senhon a écrit :

C'est affaire de choix, suivant les circonstances, d'utiliser une base
ou une autre. je peux indifféremment écrire :

char Car = 'A' ;



Le 'A' sera codé en 0x41 uniquement si l'on est sur une machine ASCII.


^^^^^^^^^^
Non. Cela va marcher aussi sur une machine à la norme AFNOR NF Z44 ou
T.61 Télétex/Minitel (et tous les jeux de caractères dérivés peu ou prou
de ISO 646), ainsi que les machines avec des char en Unicode.

En fait, les seuls cas pratiques où cela ne va pas le faire, c'est soit
sur une machine IBM ou compatible avec des char encodés en EBCDIC (et
Car vaudra alors 0xC1 sauf erreur de mémoire).
Soit si le A n'est pas ce que l'on croit, mais plutôt un Alpha majuscule
ou la première lettre de l'alphabet cyrillique ou que-sais-je... :^)



Antoine
1 2 3 4 5