Bonjour à toutes et à tous, et au passage joyeuses fêtes.
Je vous remercie tout d'abord de votre attention et du temps pris pour me répondre.
Je m'excuse d'avance auprès des modérateurs si jamais mon topic est mal placé.
Je suis actuellement étudiant en informatique, débutant en c, et j'ai un projet consistant à réaliser une bibliothèque de fonctions permettant d'utiliser des BigInteger (de grands entiers quoi).
Je m'en sors plutôt bien pour le moment sauf que j'ai un problème lors de la compilation de mon programme.
En effet j'ai une fonction newBigInteger qui me permet de transformer une chaîne de caractère en une liste doublement chainée qui regroupe par 4 les caractères et les inverse (apparemment c'est mieux ainsi d'après mon professeur). J'ai donc une structure BigInteger qui à comme éléments le signe (un entier) et une liste doublement chainée (ma chaine de caractère transformée).
je vous joins le code et vous explique mon problème.
(ceci n'est qu'une partie de mon code car celui ci est très long....)
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
54
55
56
57
58
59
60
61
62 typedef struct elem // Structure de la liste doublement chainée { int valeur; struct elem* precedent; struct elem* suivant; } element; typedef element *DLlist; typedef struct // Structure BigInteger : un signe + une liste doublement chaînée { int sign; DLlist list; } dlstruct; typedef dlstruct *BigInteger; /* ***** FONCTIONS ***** */ // newBigInteger BigInteger newBigInteger (char* chaine) { BigInteger b; char* testchaine; if (chaine==NULL) exit(EXIT_FAILURE); else { testchaine=strchr(chaine,'-'); if (testchaine==NULL) b->sign=1; else { b->sign=-1; chaine++; } char *chaine2; int longueur = strlen(chaine); // Longueur est égale à la taille du nombre donné DLlist l = creer(); // fonction qui permet de creer une liste vide DLlist tmp; int i = 4; int a,b; while(i<longueur) { chaine2= (&chaine[longueur-i]); a=atoi(chaine2); ajouterq(l,a); /* fonction qui permet d'ajouter en queue de ma liste l'élément a */ chaine[longueur-i]='\0'; i=i+4; } b=atoi(chaine); ajouterq(l,b); tmp=supprimert(l); // fonction qui permet de supprimer la tête de ma liste b->list=tmp; // ERROR : le problème est ici } return b; }
Lorsque je compile mon programme, gcc me retourne:
erreur: invalid type argument of ‘->’ (have ‘int’)
b->list=tmp;
^
J'ai eu beau chercher sur internet je n'arrive pas à trouver la solution... Puisque dans la suite, je réutilise "b->list" et il ne me considère plus celà comme une erreur...
Je vous remercie encore du temps pris pour lire mon pavé juste immonde et pour le dérangement.
Je m'excuse pour l'affichage désastreux de mon code.
Merci.
Partager