Petite explication d'un code - C - Programmation
Marsh Posté le 09-10-2007 à 00:27:29
- Sais-tu ce que veut dire dest++ ?
- Sais-tu ce que veut dire (*src) ?
Marsh Posté le 09-10-2007 à 00:29:32
-Dest++ : on incrémente de 1
- *src : c'est un pointeur sur src
Marsh Posté le 09-10-2007 à 08:45:11
he ho :
*src = déréférencement de pointeur, on accede au CONTENU de l'espace mémoire dont l'adresse est dans src.
if(*src) /* on teste si le contenu de l'espace mémoire pointé par src est non nul, ici cela corespondrait à la fin de la chaine de caractéres */
*(dest++) : on incrémente dest et on renvoit ca vieille valeur. Comem c'ets un pointeur, on déréférence pour récupérer l'espace mémoire pointée.
-----
Aprés, quelques remarques :
-return est mot-clé pas une fonction, donc pas besoin de ces parenthèses moches.
- rassure moi que tu es en 1e année en école d'info ou à la fac et que cela fait partie du chapitre 0 du cours de C et que tu n'es pas en train de recoder strncpy pour un vrai projet.
Marsh Posté le 09-10-2007 à 15:54:43
Oui c'est dans le chapitre 0 du C.
Mais je ne comprend pas par exemple quand j'ai ça:
while (*str++)
Par quoi on peut remplacer srt++ ? Je ne vois pas ce qe cela représente avec des connecteurs logiques ?
Marsh Posté le 09-10-2007 à 16:16:45
while (*str++)
{
/* trucs*/
}
est équivalent à :
while (*str)
{
str++;
/* trucs*/
}
Marsh Posté le 09-10-2007 à 17:21:39
Pour être complet, on pourrait rapeler que str++ est éqivalent à str = str + 1, et rappeler que while (*str++) est équivalent à while ((*str++) != 0) et if (*src) est équivalent à if ((*src) != 0) car la condition est fausse si l'évaluation de l'expression donne zéro.
while (size--) signifie, tant que la variable "size" (pas terrible comme nom de variable, car "size" ressemble à un mot réservé) contient une valeur non nulle, puis décrémentation après le test de la condition.
Marsh Posté le 09-10-2007 à 17:32:38
Joel F :
while (*str) <-- Est-ce la même chose que (*str < 0) ?
{
str++;
/* trucs*/
}
-----------------------
while(Size --)
est égal à =
while(Size > 0)
{
/*truc;*/
Size--;
Correct ?
Marsh Posté le 09-10-2007 à 18:07:26
Almazard a écrit : Joel F :
|
Non. C'est la même chose que (*str != 0)
(Rappel : 0 est le caractère de fin de chaine).
Citation :
while(Size > 0) Correct ? |
Oui, si Size est un entier ou un réel.
Marsh Posté le 09-10-2007 à 19:10:00
Joel F a écrit : while (*str++) |
Pas d'accord. En sortie de boucle, str pointe un cran plus loin dans la version du haut.
Marsh Posté le 09-10-2007 à 00:25:23
Bonjour, je suis en train d'étudier une fonction qui copie une chaine dans une autre en connaissant l'espace mémoire aloué, mais je ne comprend pas tout.
Je n'ai pas compris ce qui est en gras, si qq pouvait me l'expliquer.
Merci beaucoup d'avance.
char *my_strncpy(char *dest, char *src, unsigned int size)
{
char *ret;
ret = dest;
while (size--)
{
if (*src)
*(dest++) = *(src++);
else
*(dest++) = 0;
}
return (ret);
}