Bonjour à tous,
Pour un projet personnel j'essaye d'implémenter la classe StringTokenizer qui existe en Java mais en C (pas en C++ mais bien en C, ce sera évidemment pas un classe donc). Bref c'était juste pour le contexte.
Mon souci le voici, c'est mon premier fichier header que je fais, et je galère un peu. Je vous montre ce que j'ai :
Mon fichier StringTokenizer.h :
Mon fichier StringTokenizer.c :
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 #ifndef StringTokenizer_H #define StringTokenizer_H #include <stdio.h> #include <stdlib.h> typedef struct StringTokenizer{ char * str; int indice; char delim; }StringTokenizer; int countTokens(StringTokenizer str); int hasNext(StringTokenizer str); int next(StringTokenizer * str); StringTokenizer* createStringTokenizer(char * s,char delim); #endif
Comme vous pouvez le voir j'ai pris le temps d'implémenter qu'un seule méthode afin de juste faire un test qui s'est révélé être nécessaire ^^
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 #include "StringTokenizer.h" StringTokenizer * createStringTokenizer(char * s,char delim){ StringTokenizer * tok; tok=malloc(sizeof(StringTokenizer)); tok->str=s; tok->indice=0; tok->delim=delim; return tok; } int countTokens(StringTokenizer tok){} int hasNext(StringTokenizer tok){} int next(StringTokenizer * tok){}
En fin le fichier de test, test.c :
Bon, ces trois fichiers sont dans le même dossier, et je lance la commande suivante afin de compiler le code dans un terminal:
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 #include <stdio.h> #include <stdlib.h> #include "StringTokenizer.h" int main(){ char s[50]; printf("entrez votre chaine"); scanf("%s",s); StringTokenizer *token; token=createStringTokenizer(s,' '); free(token); return 0; }
Et le code d'erreur en retour de la compilation est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part gcc test.c StringTokenizer.h
Voilà, c'est tout, cela fait bien une semaine que je suis à chercher dans tous les coins de l'Internet et je trouve rien, je vous remercie donc d'avance de prendre en compte mon problème et de m'aider.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 /tmp/ccNuRixI.o: In function `main': test.c:(.text+0x4f): undefined reference to `createStringTokenizer' collect2: ld returned 1 exit status
Sur ce, bon weekend
Partager