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

reinitialiser un tableau

24 réponses
Avatar
Le Scornec Denis
Comment reinitialiser un tableau déclarer:
char tableau[255]

Celui ci est initialiser avec une chaine de caractère mais je souhaiterais
effacer son contenu pour retourner à l'état initiale!!???

10 réponses

1 2 3
Avatar
Benoit Dejean
Le Tue, 07 Oct 2003 16:52:40 +0200, Vadis a écrit :


memset:
memset(Tableau,0,sizeof(Tableau)) ;


memset(Tableau,0,sizeof Tableau) ;

sizeof(Type)
sizeof variable

Avatar
Emmanuel Delahaye
In 'fr.comp.lang.c', "Le Scornec Denis" wrote:

Comment reinitialiser un tableau déclarer:


Définir 'réinitialiser'

char tableau[255]

Celui ci est initialiser avec une chaine de caractère mais je souhaiterais
effacer son contenu pour retourner à l'état initiale!!???


Définir 'état initial'

(Nota : La plupart des clients de news disposent d'un correcteur
orthographique)

--
-ed- [remove YOURBRA before answering me]
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
<blank line>
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/

Avatar
Emmanuel Delahaye
In 'fr.comp.lang.c', wrote:

Marc Boyer m'a fait remarquer :

Et oui, quand on fait des ADT/POO, on apprend à donner
*aussi* un initialiseur/constructeur.
int newPile(struct pile*);


Tiens c'est pas con. J'avais pas pensé à ça, j'ai bien fait de
raconter ma vie. Quand je vous le disais qu'on en apprenait tous les
jours ici.


Si tu avais lu ce groupe plus en détails, tu saurais que les ADT font partie
de la culture de ce groupe.

--
-ed- [remove YOURBRA before answering me]
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
<blank line>
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/


Avatar
Bertrand Mollinier Toublet
AG wrote:

Finalement, pour initialiser un tableau entier avec tous les membres
avec la meme valeur (disons 0, par exemple), rien de tel que:

char tableau[100] = {0};



Oui mais lors d'une RE-initialisation ?

#include <stdlib.h>

#include <stdio.h>

void print(char *tab, size_t nelem)
{
size_t i;

putc('[', stdout);
for (i = 0; i < nelem - 1; i++)
{
printf("%3d, ", tab[i]);
if (!((i+1) % 10)) printf("n ");
}
printf("%3d]n", tab[nelem - 1]);
}

static char reinitialiseur[100] = {0};

int main(void)
{
char tableau[100] = {0};
size_t i;

for (i = 0; i < 100; i++)
{
tableau[i] = i;
}

print(tableau, 100);

memcpy(tableau, reinitialiseur, sizeof reinitialiseur);
/* la, je dois avouer, memcpy est necessaire :-/ */

print(tableau, 100);

return 0;
}

--
Bertrand Mollinier Toublet
"Bikes are like ladies, if you don't take care of them all the time,
when you feel like going back to them, it takes a lot of work"
-- Riccardo Turchetto


Avatar
Emmanuel Delahaye
In 'fr.comp.lang.c', "Vadis" wrote:

Bonjour;

Plutôt que d'utiliser une boucle pour initialiser un tableau, je prefere
utiliser la fonction memset ou l'équivalent API windows FillMemory ou
encore ZeroMemory.

boucle:
for(i=0 ; i<100 ; tableau[i++]=0) {};


memset:
memset(Tableau,0,sizeof(Tableau)) ;


Ca dépend de ce tu initialises. Pour de char ou des entiers non signés, ça
peut aller (et encore pas toujours). Mais pour des flottants ou des pointeurs
c'est déjà plus chaud. Bref, à éviter au niveau application (a mettre
éventuellement dans des macros ou fonctions dépendantes de l'implémentation
si c'est sans danger avec celle-ci).

Extrait de ma bibliothèque personnelle:

#if defined (__BORLANDC__)
# define SYS_CLR(p, T)
memset ((p), 0, sizeof *(p))

<...>

#else
# define SYS_CLR(p, T)
do
{
static const T z = {0};
*(p) = z;
}
while(0)
#endif

--
-ed- [remove YOURBRA before answering me]
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
<blank line>
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/


Avatar
Emmanuel Delahaye
In 'fr.comp.lang.c', AG wrote:

Finalement, pour initialiser un tableau entier avec tous les membres
avec la meme valeur (disons 0, par exemple), rien de tel que:

char tableau[100] = {0};


Oui mais lors d'une RE-initialisation ?


La boucle.

--
-ed- [remove YOURBRA before answering me]
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
<blank line>
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/


Avatar
un.gabacho.sans.pourrier
Emmanuel Delahaye a fait remarquer :

Celui ci est initialiser avec une chaine de caractère mais je souhaiterais
effacer son contenu pour retourner à l'état initiale!!???


Définir 'état initial'

(Nota : La plupart des clients de news disposent d'un correcteur
orthographique)


Qui ne peut pas grand chose contre ce genre de fautes... à part
« chaîne » tout sera diagnostiqué correcte dans la phrase citée.


Avatar
un.gabacho.sans.pourrier
Emmanuel Delahaye m'a fait part.

Si tu avais lu ce groupe plus en détails, tu saurais que les ADT font partie
de la culture de ce groupe.


Gnnnnné ?

Avatar
Richard Delorme

Emmanuel Delahaye a fait remarquer :

Celui ci est initialiser avec une chaine de caractère mais je
souhaiterais effacer son contenu pour retourner à l'état initiale!!???


Définir 'état initial'

(Nota : La plupart des clients de news disposent d'un correcteur
orthographique)


Qui ne peut pas grand chose contre ce genre de fautes... à part
« chaîne » tout sera diagnostiqué correcte dans la phrase citée.


Pourtant « chaine » est l'orthographe recommandée pour ce mot :

http://www.orthographe-recommandee.info/orth.htm
http://www.renouvo.int.ms/Liste.html#c

--
Richard



Avatar
un.gabacho.sans.pourrier
Richard Delorme écrit.

Qui ne peut pas grand chose contre ce genre de fautes... à part
« chaîne » tout sera diagnostiqué correcte dans la phrase citée.


Pourtant « chaine » est l'orthographe recommandée pour ce mot :


Évidemment, si vous parlez de la norme 1990... désolé mais je compile
encore avec mon vieux Littré Grevisse.


1 2 3