Bonjour,
mon enseignant m'a donné le corrigé de l'exercice ci-dessous, mon problème est que je ne comprends pas
-la signification de "fprintf", "stderr", pouvez m'expliquer? Et y a t-il une différence entre printf et fprintf?
-Quelle est la signification de cette ligne char * r = (char*) malloc((strlen(src)+1) * sizeof(char))? Quel est l'intéret de l'utiliser?
-Comment utilise t-on les * dans cet exercice? je sais juste qu'on utilise les astérisques * pour les pointeurs .En fait je débute en c, j'ai du mal à comprendre concrètement l'utilisation des pointeurs, des *,... quelqu'un pourrait t-il m'expliquer?
Merci d'avance

Exercice : Cloner une chaîne de caractères
On souhaite écrire une fonction cloneStrings qui retourne une copie d'une chaîne de caractèrespassee en paramètre.

corrigé:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
char * cloneString(char * src)
{
    if(src == NULL)
    {
        fprintf(stderr,"Entr�e vide!\n");
        exit(1);
    }
 
    char * r = (char*) malloc((strlen(src)+1) * sizeof(char));
    if(r == NULL)
    {
        fprintf(stderr,"Plus assez de m�moire!\n");
        exit(1);
    }
 
    /** sauvegarde de l'adresse du d�but pour le retour */
    char * t = r;
 
    while ((*r = *src) != '\0')
    {
        src++;
        r++;
    }
 
    return t;
}