dans un bout de programme j'utilise un double tableau de taille 'n x m',
chaque élément est une structure de 'p' champs qui sont des fractions de
unsigned int (quelques bits), la taille de la structure est 16.
Je souhaite pouvoir affecter à tous les champs de tous les éléments du
tableau la valeur zero très simplement (ie: avec une ligne ou 2 de code)
avec une constante, une macro ou autre mais je ne sais pas comment faire.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Mouarf
bonjour à tous,
dans un bout de programme j'utilise un double tableau de taille 'n x m', chaque élément est une structure de 'p' champs qui sont des fractions de unsigned int (quelques bits), la taille de la structure est 16.
Je souhaite pouvoir affecter à tous les champs de tous les éléments du tableau la valeur zero très simplement (ie: avec une ligne ou 2 de code) avec une constante, une macro ou autre mais je ne sais pas comment faire.
Qqun pourrait-il me guider?
Merci d'avance.
bonjour à tous,
dans un bout de programme j'utilise un double tableau de taille 'n x m',
chaque élément est une structure de 'p' champs qui sont des fractions de
unsigned int (quelques bits), la taille de la structure est 16.
Je souhaite pouvoir affecter à tous les champs de tous les éléments du
tableau la valeur zero très simplement (ie: avec une ligne ou 2 de code)
avec une constante, une macro ou autre mais je ne sais pas comment faire.
dans un bout de programme j'utilise un double tableau de taille 'n x m', chaque élément est une structure de 'p' champs qui sont des fractions de unsigned int (quelques bits), la taille de la structure est 16.
Je souhaite pouvoir affecter à tous les champs de tous les éléments du tableau la valeur zero très simplement (ie: avec une ligne ou 2 de code) avec une constante, une macro ou autre mais je ne sais pas comment faire.
Qqun pourrait-il me guider?
Merci d'avance.
Guillaume L.
bonjour à tous,
Bonjour,
dans un bout de programme j'utilise un double tableau de taille 'n x m', chaque élément est une structure de 'p' champs qui sont des fractions de unsigned int (quelques bits), la taille de la structure est 16.
Je souhaite pouvoir affecter à tous les champs de tous les éléments du tableau la valeur zero très simplement (ie: avec une ligne ou 2 de code)
Qqun pourrait-il me guider?
Je te propose un truc tout bête :
for(int i=0; i<n; ++i) { tab[i] = calloc(n, sizeof(struct ta_structure)); /* ou bien (void)memset(tab[i], 0, m * sizeof(struct ta_structure)); */ }
Je ne sais pas si j'ai bien répondu à ta question (nuit blanche, tout ca).
Guillaume Leconte
-- You're not a beautiful and unique snowflake.
bonjour à tous,
Bonjour,
dans un bout de programme j'utilise un double tableau de taille 'n x m',
chaque élément est une structure de 'p' champs qui sont des fractions de
unsigned int (quelques bits), la taille de la structure est 16.
Je souhaite pouvoir affecter à tous les champs de tous les éléments du
tableau la valeur zero très simplement (ie: avec une ligne ou 2 de code)
Qqun pourrait-il me guider?
Je te propose un truc tout bête :
for(int i=0; i<n; ++i)
{
tab[i] = calloc(n, sizeof(struct ta_structure));
/* ou bien (void)memset(tab[i], 0, m * sizeof(struct ta_structure)); */
}
dans un bout de programme j'utilise un double tableau de taille 'n x m', chaque élément est une structure de 'p' champs qui sont des fractions de unsigned int (quelques bits), la taille de la structure est 16.
Je souhaite pouvoir affecter à tous les champs de tous les éléments du tableau la valeur zero très simplement (ie: avec une ligne ou 2 de code)
Qqun pourrait-il me guider?
Je te propose un truc tout bête :
for(int i=0; i<n; ++i) { tab[i] = calloc(n, sizeof(struct ta_structure)); /* ou bien (void)memset(tab[i], 0, m * sizeof(struct ta_structure)); */ }
Je ne sais pas si j'ai bien répondu à ta question (nuit blanche, tout ca).
Guillaume Leconte
-- You're not a beautiful and unique snowflake.
cedric
Je souhaite pouvoir affecter à tous les champs de tous les éléments du tableau la valeur zero très simplement (ie: avec une ligne ou 2 de code)
Bonjour.
Si votre objet est d'allocation statique (variable globale ou bien définie localement mais avec 'static'), alors il n'y a rien de spécial à faire, toutes les variables de type d'allocation statique étant initialisée à zéro par défaut, et ceci étant vrai également pour les tableaux, les structures, etc...
Si votre variable est automatique (locale), vous devez expliciter au moins le premier initialiseur, et dire qu'il vaut zéro. Les autres entrées du tableaux seront initialisées à zéro aussi (non pas parce que le premier vaut zéro, mais parce qu'ils sont initialisés à la valeur par défaut, zéro).
Dans les deux cas, il est plus sympa de faire figurer l'initialisateur, histoire de bien signaler que vous n'initialisez pas votre variable dans le code à dessein.
Voilà, en esperant ne être tombé à côté de la question (aïe).
Je souhaite pouvoir affecter à tous les champs de tous les éléments du
tableau la valeur zero très simplement (ie: avec une ligne ou 2 de code)
Bonjour.
Si votre objet est d'allocation statique (variable globale ou bien
définie localement mais avec 'static'), alors il n'y a rien de spécial à
faire, toutes les variables de type d'allocation statique étant
initialisée à zéro par défaut, et ceci étant vrai également pour les
tableaux, les structures, etc...
Si votre variable est automatique (locale), vous devez expliciter au
moins le premier initialiseur, et dire qu'il vaut zéro. Les autres
entrées du tableaux seront initialisées à zéro aussi (non pas parce que
le premier vaut zéro, mais parce qu'ils sont initialisés à la valeur par
défaut, zéro).
Dans les deux cas, il est plus sympa de faire figurer l'initialisateur,
histoire de bien signaler que vous n'initialisez pas votre variable dans
le code à dessein.
Je souhaite pouvoir affecter à tous les champs de tous les éléments du tableau la valeur zero très simplement (ie: avec une ligne ou 2 de code)
Bonjour.
Si votre objet est d'allocation statique (variable globale ou bien définie localement mais avec 'static'), alors il n'y a rien de spécial à faire, toutes les variables de type d'allocation statique étant initialisée à zéro par défaut, et ceci étant vrai également pour les tableaux, les structures, etc...
Si votre variable est automatique (locale), vous devez expliciter au moins le premier initialiseur, et dire qu'il vaut zéro. Les autres entrées du tableaux seront initialisées à zéro aussi (non pas parce que le premier vaut zéro, mais parce qu'ils sont initialisés à la valeur par défaut, zéro).
Dans les deux cas, il est plus sympa de faire figurer l'initialisateur, histoire de bien signaler que vous n'initialisez pas votre variable dans le code à dessein.
Voilà, en esperant ne être tombé à côté de la question (aïe).
Mouarf
"cedric" schrieb im Newsbeitrag news:42dbf516$0$28662$
Je souhaite pouvoir affecter à tous les champs de tous les éléments du tableau la valeur zero très simplement (ie: avec une ligne ou 2 de code)
Bonjour.
Si votre objet est d'allocation statique (variable globale ou bien définie localement mais avec 'static'), alors il n'y a rien de spécial à faire, toutes les variables de type d'allocation statique étant initialisée à zéro par défaut, et ceci étant vrai également pour les tableaux, les structures, etc...
Si votre variable est automatique (locale), vous devez expliciter au moins le premier initialiseur, et dire qu'il vaut zéro. Les autres entrées du tableaux seront initialisées à zéro aussi (non pas parce que le premier vaut zéro, mais parce qu'ils sont initialisés à la valeur par défaut, zéro).
Dans les deux cas, il est plus sympa de faire figurer l'initialisateur, histoire de bien signaler que vous n'initialisez pas votre variable dans le code à dessein.
Voilà, en esperant ne être tombé à côté de la question (aïe).
merci pour votre réponse,
ca m'arrange bien que les variables statiques soient initialisées à zero, d'ailleurs sont-elles initialisées à zero par le programme au démarrage ou par le système lors de l'allocation.
Maintenant une autre question pour la culture, est-ce possible de créer {{0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0},...,{0,0,0,0,0,0,0,0,0,0}} (n fois) à l'aide d'une macro?
"cedric" <rixed@free.fr> schrieb im Newsbeitrag
news:42dbf516$0$28662$636a15ce@news.free.fr...
Je souhaite pouvoir affecter à tous les champs de tous les éléments du
tableau la valeur zero très simplement (ie: avec une ligne ou 2 de code)
Bonjour.
Si votre objet est d'allocation statique (variable globale ou bien définie
localement mais avec 'static'), alors il n'y a rien de spécial à faire,
toutes les variables de type d'allocation statique étant initialisée à
zéro par défaut, et ceci étant vrai également pour les tableaux, les
structures, etc...
Si votre variable est automatique (locale), vous devez expliciter au moins
le premier initialiseur, et dire qu'il vaut zéro. Les autres entrées du
tableaux seront initialisées à zéro aussi (non pas parce que le premier
vaut zéro, mais parce qu'ils sont initialisés à la valeur par défaut,
zéro).
Dans les deux cas, il est plus sympa de faire figurer l'initialisateur,
histoire de bien signaler que vous n'initialisez pas votre variable dans
le code à dessein.
Voilà, en esperant ne être tombé à côté de la question (aïe).
merci pour votre réponse,
ca m'arrange bien que les variables statiques soient initialisées à zero,
d'ailleurs sont-elles initialisées à zero par le programme au démarrage ou
par le système lors de l'allocation.
Maintenant une autre question pour la culture, est-ce possible de créer
{{0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0},...,{0,0,0,0,0,0,0,0,0,0}} (n
fois) à l'aide d'une macro?
"cedric" schrieb im Newsbeitrag news:42dbf516$0$28662$
Je souhaite pouvoir affecter à tous les champs de tous les éléments du tableau la valeur zero très simplement (ie: avec une ligne ou 2 de code)
Bonjour.
Si votre objet est d'allocation statique (variable globale ou bien définie localement mais avec 'static'), alors il n'y a rien de spécial à faire, toutes les variables de type d'allocation statique étant initialisée à zéro par défaut, et ceci étant vrai également pour les tableaux, les structures, etc...
Si votre variable est automatique (locale), vous devez expliciter au moins le premier initialiseur, et dire qu'il vaut zéro. Les autres entrées du tableaux seront initialisées à zéro aussi (non pas parce que le premier vaut zéro, mais parce qu'ils sont initialisés à la valeur par défaut, zéro).
Dans les deux cas, il est plus sympa de faire figurer l'initialisateur, histoire de bien signaler que vous n'initialisez pas votre variable dans le code à dessein.
Voilà, en esperant ne être tombé à côté de la question (aïe).
merci pour votre réponse,
ca m'arrange bien que les variables statiques soient initialisées à zero, d'ailleurs sont-elles initialisées à zero par le programme au démarrage ou par le système lors de l'allocation.
Maintenant une autre question pour la culture, est-ce possible de créer {{0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0},...,{0,0,0,0,0,0,0,0,0,0}} (n fois) à l'aide d'une macro?
Antoine Leca
En <news:42dcfcaf$0$20512$, Mouarf va escriure:
ca m'arrange bien que les variables statiques soient initialisées à zero, d'ailleurs sont-elles initialisées à zero par le programme au démarrage ou par le système lors de l'allocation.
Je ne suis pas vraiment Normand, mais là la bonne réponse c'est « ça dépend ».
En plus, la différence entre l'un et l'autre est parfois très fine (certains programmes passent le plus clair de leur temps durant l'initialisation à appeler le « système »).
Maintenant une autre question pour la culture, est-ce possible de créer {{0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0},...,{0,0,0,0,0,0,0,0,0,0}} (n fois) à l'aide d'une macro?
Une seule je ne pense pas, il va falloir utiliser plusieurs macros. De plus, quelque chose de simple je ne vois pas (pas de #for au nivau du préprocesseur).
Donc il reste les techniques de manipulations de morceaux de chaînes de caractères pour obtenir ce que tu veux, mais le résultat n'est pas quelque chose de très jojo, ÀMHA. Le plus simple qui me vient à l'esprit pour le moment c'est du genre (en supposant n inférieur ou égal à 077, pas de problème théorique s'il faut plus, je pense que le principe est clair)
/*...*/ = { #define un {0,0,0,0,0,0,0,0,0,0} #if n & 1 un, #endif #if n & 2 un, un, #endif #if n & 4 un, un, un, un, #endif #if n & 010 un, un, un, un, un, un, un, un, #endif #if n & 020 un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, #endif #if n & 040 un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, #endif #undef un };
Antoine
En <news:42dcfcaf$0$20512$636a15ce@news.free.fr>, Mouarf va escriure:
ca m'arrange bien que les variables statiques soient initialisées à
zero, d'ailleurs sont-elles initialisées à zero par le programme au
démarrage ou par le système lors de l'allocation.
Je ne suis pas vraiment Normand, mais là la bonne réponse c'est
« ça dépend ».
En plus, la différence entre l'un et l'autre est parfois très fine (certains
programmes passent le plus clair de leur temps durant l'initialisation à
appeler le « système »).
Maintenant une autre question pour la culture, est-ce possible de
créer
{{0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0},...,{0,0,0,0,0,0,0,0,0,0}}
(n fois) à l'aide d'une macro?
Une seule je ne pense pas, il va falloir utiliser plusieurs macros.
De plus, quelque chose de simple je ne vois pas (pas de #for au nivau du
préprocesseur).
Donc il reste les techniques de manipulations de morceaux de chaînes de
caractères pour obtenir ce que tu veux, mais le résultat n'est pas quelque
chose de très jojo, ÀMHA.
Le plus simple qui me vient à l'esprit pour le moment c'est du genre (en
supposant n inférieur ou égal à 077, pas de problème théorique s'il faut
plus, je pense que le principe est clair)
/*...*/ = {
#define un {0,0,0,0,0,0,0,0,0,0}
#if n & 1
un,
#endif
#if n & 2
un, un,
#endif
#if n & 4
un, un, un, un,
#endif
#if n & 010
un, un, un, un, un, un, un, un,
#endif
#if n & 020
un, un, un, un, un, un, un, un,
un, un, un, un, un, un, un, un,
#endif
#if n & 040
un, un, un, un, un, un, un, un,
un, un, un, un, un, un, un, un,
un, un, un, un, un, un, un, un,
un, un, un, un, un, un, un, un,
#endif
#undef un
};
ca m'arrange bien que les variables statiques soient initialisées à zero, d'ailleurs sont-elles initialisées à zero par le programme au démarrage ou par le système lors de l'allocation.
Je ne suis pas vraiment Normand, mais là la bonne réponse c'est « ça dépend ».
En plus, la différence entre l'un et l'autre est parfois très fine (certains programmes passent le plus clair de leur temps durant l'initialisation à appeler le « système »).
Maintenant une autre question pour la culture, est-ce possible de créer {{0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0},...,{0,0,0,0,0,0,0,0,0,0}} (n fois) à l'aide d'une macro?
Une seule je ne pense pas, il va falloir utiliser plusieurs macros. De plus, quelque chose de simple je ne vois pas (pas de #for au nivau du préprocesseur).
Donc il reste les techniques de manipulations de morceaux de chaînes de caractères pour obtenir ce que tu veux, mais le résultat n'est pas quelque chose de très jojo, ÀMHA. Le plus simple qui me vient à l'esprit pour le moment c'est du genre (en supposant n inférieur ou égal à 077, pas de problème théorique s'il faut plus, je pense que le principe est clair)
/*...*/ = { #define un {0,0,0,0,0,0,0,0,0,0} #if n & 1 un, #endif #if n & 2 un, un, #endif #if n & 4 un, un, un, un, #endif #if n & 010 un, un, un, un, un, un, un, un, #endif #if n & 020 un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, #endif #if n & 040 un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, un, #endif #undef un };
Antoine
Horst Kraemer
"Mouarf" wrote:
bonjour à tous,
dans un bout de programme j'utilise un double tableau de taille 'n x m', chaque élément est une structure de 'p' champs qui sont des fractions de unsigned int (quelques bits), la taille de la structure est 16.
Je souhaite pouvoir affecter à tous les champs de tous les éléments du tableau la valeur zero très simplement (ie: avec une ligne ou 2 de code) avec une constante, une macro ou autre mais je ne sais pas comment faire.
Qqun pourrait-il me guider?
memset( array, 0, n*m*sizeof **array);
-- Horst
"Mouarf" <mouarf@chezmoi.fr> wrote:
bonjour à tous,
dans un bout de programme j'utilise un double tableau de taille 'n x m',
chaque élément est une structure de 'p' champs qui sont des fractions de
unsigned int (quelques bits), la taille de la structure est 16.
Je souhaite pouvoir affecter à tous les champs de tous les éléments du
tableau la valeur zero très simplement (ie: avec une ligne ou 2 de code)
avec une constante, une macro ou autre mais je ne sais pas comment faire.
dans un bout de programme j'utilise un double tableau de taille 'n x m', chaque élément est une structure de 'p' champs qui sont des fractions de unsigned int (quelques bits), la taille de la structure est 16.
Je souhaite pouvoir affecter à tous les champs de tous les éléments du tableau la valeur zero très simplement (ie: avec une ligne ou 2 de code) avec une constante, une macro ou autre mais je ne sais pas comment faire.