Le cned a encore frappé...
BonuxDu13
-
BonuxDu13 -
BonuxDu13 -
ou du moins je le pense. Voilà un extrait de mon cours, et franchement je trouve nulle part l'expression mise en evidence, et quand j'essaie de la tester, mon compilateur m'insulte ; il me dit que je ne suis pas en train d'utiliser une structure!
"Remplissage d’un tableau dynamique
for(int i=0;i<longueur;i++)
{
pttab[i]=mot[i]; // chaque caractère du mot est inscrit dans le tableau dynamique
}
On utilise une boucle for pour pouvoir accéder à chacune des cases du tableau.
Le seul paramètre que l’on connaisse est l’adresse du pointeur qui n’est autre que l’adresse de base du tableau. Donc la
variable i permettra d’accéder à l’adresse de base pttab augmentée de la valeur de la variable i.
mot.at(i) ; permet d’accéder à chaque caractère de la chaîne de type string."
"Remplissage d’un tableau dynamique
for(int i=0;i<longueur;i++)
{
pttab[i]=mot[i]; // chaque caractère du mot est inscrit dans le tableau dynamique
}
On utilise une boucle for pour pouvoir accéder à chacune des cases du tableau.
Le seul paramètre que l’on connaisse est l’adresse du pointeur qui n’est autre que l’adresse de base du tableau. Donc la
variable i permettra d’accéder à l’adresse de base pttab augmentée de la valeur de la variable i.
mot.at(i) ; permet d’accéder à chaque caractère de la chaîne de type string."
Configuration: Windows / Firefox 79.0
6 réponses
-
Salut BonuxDu13,
Dans ton extrait de cours, tu postes deux choses :- un court code
- un descriptif explicatif du code
Voilà le code que tu postes :
for(int i=0;i<longueur;i++) { pttab[i]=mot[i]; // chaque caractère du mot est inscrit dans le tableau dynamique }
Ce code est du C valide. Bien que les types ne soient pas précisés, on peut supposer avec le contexte qu'en ligne 3mot
est un tableau dechar
et quepttab
est une variable pointeur surchar
, pointant vers un espace mémoire alloué d'une taille suffisante, et que longueur est d'un type entier et contient un entier positif prédéterminé correspondant au nombre dechar
composant la chaîne y compris le caractère terminateur'\0'
.
Voilà le descriptif que tu postes censé être associé à ce code :
On utilise une boucle for pour pouvoir accéder à chacune des cases du tableau.
Le seul paramètre que l’on connaisse est l’adresse du pointeur qui n’est autre que l’adresse de base du tableau. Donc la
variable i permettra d’accéder à l’adresse de base pttab augmentée de la valeur de la variable i.
mot.at(i) ; permet d’accéder à chaque caractère de la chaîne de type string.
Ce descriptif est effectivement erroné en sa dernière ligne mise en gras car il évoque :-
mot.at(i)
qui n'est pas présent dans le code commenté - comme tu l'as observé
mot.at(i)
n'existe pas en C, mais en C++ - en il outre il parle d'une chaîne de type
string
, ce qui n'existe pas non plus en C, mais en C++
Il s'agit manifestement d'une coquille dans ton cours, que tu devrais signaler à son concepteur. Les chaînes C n'ont rien à voir avec les chaînes de typestring
du C++.
Par ailleurs, dans le code proposé, on ne sait pas comment a été déterminée la valeur delongueur
. Dès lors, il me semble que le descriptif pourrait indiquer "les deux seuls paramètres que l'on connaisse sont l’adresse du pointeur qui n’est autre que l’adresse de base du tableau, et la longueur de la chaîne y compris le caractère terminateur'\0'
" et probablement alerter l'utilisateur sur la nécessité que l'espace mémoire alloué surpttab
soit d'une taille suffisante.
En réalité, pour se passer de ce paramètre, il suffirait que le code teste dans une boucle si lechar
copié est'\0'
et si oui, arrête la copie. Cela peut se faire par exemple avec une boucledo
/while
, ou justewhile
.
C'est comme cela que K&R proposent un code d'exemple d'implémentation destrcpy()
dans leur livre de référence.
Dal -
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour, qu'exprime le compilateur? -
Bonjour,
mot[i], c'est un tableau
mot.at[i], c'est une structure mot qui possède un champ at (qui est un tableau) ....
Elle est déclarée quelque part cette structure ? -
oui, c'est bizarre ...
Sinon, on est sur le forum C, pas C++, là ... -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
-
Ah, ca a changé, on est dans le forum C++ maintenant ...