Bonjour,

Pour un de mes programmes, j'ai besoin de passer par une variable temporaire avant de pouvoir la stocker dans l'un des maillons d'une liste chainé. Pour réinitialiser ma variable temporaire j'utilise strcpy.

Le soucis et que lorsque j'utilise strcpy, mes précédente "sauvegarde" au sein de ma liste chainé sont aussi réinitialisé. Comment puis je faire pour pouvoir travailler avec une seul variable et la réinitialiser sans toucher au précédente insertion ?

Vous pouvez constater mon soucis sur la ligne 51

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
typedef struct s_list_chain{
    char* value;
    struct  s_list_chain* next;
}linkedList;
 
linkedList* linkedList_new(char* value){
    linkedList* node = (linkedList*) malloc (sizeof (linkedList));
    node->value = value; 
    node->next = NULL;
    return node;
}
 
linkedList* linkedList_add(linkedList* list, char* value){
    linkedList *newlist = linkedList_new(value);
    if (!list)
        return newlist;
 
    linkedList* head = list;
 
    while (list->next)
        list= list->next;    
    list->next=newlist;
    return head;
}
 
void linkedList_display(linkedList* list){
    while (list->next){
        printf("%s ", list->value);
        list = list->next;
    }
    printf("%s ", list->value);
}
 
int main()
{
	char temp [256];
	strcpy(temp, "insertion 1");
 
	linkedList* listeChamps = NULL;
	listeChamps = linkedList_add(listeChamps, temp);
 
	strcpy(temp, "insertion 2");
	listeChamps = linkedList_add(listeChamps, temp);
 
	linkedList_display(listeChamps); 
	// Affiche : "insertion 2 insertion 2" et non pas "insertion 1 insertion 2"
	system("PAUSE");
}