Typedef et string

- - Dernière réponse : [Dal]
Messages postés
5284
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
18 novembre 2019
- 12 nov. 2019 à 14:36
bonjour, tout d'abord merci de porter attention à ma question.
Je sais qu' en langage c:
#define sert à spécifier les macro/lettres i.e nom = valeurs
typedef s'exprime de la manière suivante; typedef déclaration de variable.

-j'ai importer la bibliothèque string avec #include<string.h>
-j'ai définit lassets+1 et chaussures

or je voudrais définir le type string comme un tableau de lassets+1 entiers sur 1 octet. sachant que j'ai auparavant définit lassets+1 avec le define.
donc j'ai écrit typedef string tab[lassets+1] est ce correct svp je n'en suit pas sûr ?

Par ailleurs, je voudrais définir le type tableau comme un tableau de chaussures de string sachant que chaussures a été définit auparavant avec le define.
Ici, je n'ai aucune idée pouvez vous m'aider svp ?


merci d'avance




Configuration: Windows / Chrome 78.0.3904.87
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
8965
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2019
461
1
Merci
bonjour,
ce que tu as écrit (typedef string tab[lassets+1]) définit un nouveau type, nommé tab, comme un tableau de lassets+1 string.
si tu veux définir le type string comme un tableau de lassets+1 entiers sur 1 octet, tu dois te répondre à la question suivante:
comment déclarer une variable nommée string, étant un tableau de lassets+1 entiers sur 1 octet?
quand tu auras trouvé la réponse, il te sera facile d'écrire le typedef.

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 70306 internautes nous ont dit merci ce mois-ci

Commenter la réponse de yg_be
0
Merci
ma réponse serait:

string = int tab[LASSETS+1]
ou
string = char tab[LASSETS+1]
-
en écrivant int tableau[lassets+1) je ne déclare pas de variable mais un tableau de lassets+1 entier.
déclaration d'une variable de type int:
int pythagore4 ;
yg_be
Messages postés
8965
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 novembre 2019
461 > 1999-pythagore -
je pense vraiment que tu n'es pas prêt à faire cet exercice.
je pense que tu dois d'abord avancer dans, au moins, deux domaines:
- déclaration et utilisation des tableaux en C
- utilisation de typedef dans les cas très simples
je pense que, quelques jours de travail plus tard, tu seras prêt pour l'exercice.
-
Je n'ai malheureusement pas le temps de faire de tel exercice.
pour déclarer un tableau de 4 entier c'est bien int tableau[4];
donc pour déclarer un tableau de lassets+1 d'entier cest bien
int tableau[lassets+1];

déclaration de ORDI qui est un entier codé sur un octet:
tydedef char ORDI;
Dalfab
Messages postés
419
Date d'inscription
dimanche 7 février 2016
Statut
Membre
Dernière intervention
10 novembre 2019
46 -
Donc une variable nommée
tabl
qui est un tableau de
lassets+1
entiers sur 1 octet s'écrit
char tabl[lassets+1];
.
Pour définir un type on met le nom du type au lieu du nom de la variable et on ajoute
typedef
devant, ce qui fait:
typedef char String[lassets+1];
.
-
Bonsoir, merci j'étais d'ailleurs parti sur quelque chose comme ça.
Commenter la réponse de 1999-pythagore
Messages postés
5284
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
18 novembre 2019
820
0
Merci
Bonjour 1999-pythagore,

Juste un mot additionnel aux remarques des contributeurs à ce fil.

En C, les
typedef
ne servent qu'à créer des alias sur des types existants ou des types définis par l'utilisateur. Ils ne créent pas réellement de nouveaux types.

Sur le plan du style de programmation, à mon sens, les programmeurs C ne devaient en faire un usage que très exceptionnellement, par exemple pour faciliter l'usage de types vraiment complexes, car ils ont l'inconvénient de masquer l'information sur le type réel utilisé.

Un autre usage légitime est pour la définition de types opaques pour le programmeur. Là, l'opacité créée par l'usage du
typedef
est intentionnelle, le programmeur n'étant pas sensé connaître le type réel, car il est utilisé par une bibliothèque qui s'en charge pour lui et le programmeur n'est pas sensé intervenir directement sur les données gérées au travers de ce type : il n'utilise le type opaque qu'au travers des fonctions qui sont mises à sa disposition par la bibliothèque. Un exemple est le "type"
FILE
qui est en réalité un
typedef
sur une structure opaque définie par la bibliothèque standard du C dans stdio.h

http://www.cplusplus.com/reference/cstdio/FILE/

Utiliser un
typedef
pour définir un alias sur un type simple comme un tableau de char avec une certaine dimension ne me paraît pas être une pratique conseillée, à moins qu'il ne s'agisse d'un exercice et que l'on doive répondre à une question théorique d'application d'un cours posée par un enseignant :-)

Dal
[Dal]
Messages postés
5284
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
18 novembre 2019
820 -
Sinon, comme tu parles de "chaussures", je supposes que tu parlerais de "lacets" plutôt que de "lassets" ;-)
Commenter la réponse de [Dal]