Tu peux m'expliquer commen allouer de la mémoire au pointeur ?
Je suis nouveau en c, et je pensais qu'en déclarant le pointeur, il n'y avait pas besoin d'allouer de la mémoire, puisque celui-ci utiliserait la mémoire déjà alouer par la fonction tar_open, dans la librairie correspondante...
Si c'est pas le cas, je comprend maintenant les fautes de segmentation que j'ai obtenu dans d'autre prog. Pourrais tu m'expliquer comment il faut procéder ici (ca me permettra de comprendre mon erreur)
J'ai bien acheté de livres, mais il manque parfois des exemples concrets, et j'ai toujours besoin de me planter pour enregister ;)
Tu peux m'expliquer commen allouer de la mémoire au pointeur ?
Je suis nouveau en c, et je pensais qu'en déclarant le pointeur, il n'y avait pas besoin d'allouer de la mémoire, puisque celui-ci utiliserait la mémoire déjà alouer par la fonction tar_open, dans la librairie correspondante...
Si c'est pas le cas, je comprend maintenant les fautes de segmentation que j'ai obtenu dans d'autre prog. Pourrais tu m'expliquer comment il faut procéder ici (ca me permettra de comprendre mon erreur)
J'ai bien acheté de livres, mais il manque parfois des exemples concrets, et j'ai toujours besoin de me planter pour enregister ;)
Je vais essayer ca demain, étant informaticien, j'ai un peu de mal à me remettre sur l'ordi en ce moment après le boulot...
Donc si j'ai bien compris, je revois le linkage et je décommente la ligne d'initialisation de la variable type ?
Un grand, grand merci pour ton aide ! J'espère que ca me permettra d'avancer
En fait j'ai peut-etre trouvé un des problèmes :
J'ai ajouté la librairie #include <fcntl.h>, dans laquelle est contenue open() qui semble être utiliser par libtar... (si quelqu'un peut confirmer ?)
Par contre, depuis que j'ai ajouté cette entête, il me dit qu'il ne connaît pas la fonction tar_open !!
Pourquoi ces deux entêtes ne pourraient-elles pas coexister ? Ou et ce que l'erreur ce situe ailleurs ?
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <fcntl.h>
#include <libtar.h>
char * list_options = "a:o:";
int option;
char * tar_path;
TAR *tarh;
tartype_t Type;
int nMode = 0644;
int main(int argc, char *argv[])
{
while ((option = getopt(argc, argv, list_options)) != -1) {
switch (option) {
case 'a' :
fprintf(stdout, "option a : %s\n", optarg);
break;
case 'o' :
fprintf(stdout, "option o : %s\n", optarg);
tar_path = optarg;
break;
case '?' :
fprintf(stdout, "wrong option !\n");
break;
}
}
//fprintf(stdout, "voilà le path :%s", tar_path);
/*
Type.openfunc=open;
Type.closefunc=close;
Type.readfunc=read;
Type.writefunc=write;
*/
tar_open(&tarh, tar_path, &Type, O_RDONLY, 0, TAR_GNU);
//tar_close(&tarh);
return EXIT_SUCCESS;
}
/home/wsb/prog/archiver/src/archiver.c:48: erreur: ‘O_RDONLY’ undeclared (first use in this function)
/home/wsb/prog/archiver/src/archiver.c:48: erreur: (Chaque identificateur non déclaré est rapporté une seule fois
Or j'ai bien linké la libtar, et dans le manuel, il semble que la valeur de oflags ne peut-être que O_RDONLY ou O_WONLY...
Est-ce que je dois définir cette constante quelque part ?
/home/wsb/prog/archiver/src/archiver.c:48: erreur: ‘O_RDONLY’ undeclared (first use in this function)
/home/wsb/prog/archiver/src/archiver.c:48: erreur: (Chaque identificateur non déclaré est rapporté une seule fois
Or j'ai bien linké la libtar, et dans le manuel, il semble que la valeur de oflags ne peut-être que O_RDONLY ou O_WONLY...
Est-ce que je dois définir cette constante quelque part ?
[^] # Re: Docs
Posté par helmut . En réponse au message utilisation de libtar. Évalué à 1.
Je suis nouveau en c, et je pensais qu'en déclarant le pointeur, il n'y avait pas besoin d'allouer de la mémoire, puisque celui-ci utiliserait la mémoire déjà alouer par la fonction tar_open, dans la librairie correspondante...
Si c'est pas le cas, je comprend maintenant les fautes de segmentation que j'ai obtenu dans d'autre prog. Pourrais tu m'expliquer comment il faut procéder ici (ca me permettra de comprendre mon erreur)
J'ai bien acheté de livres, mais il manque parfois des exemples concrets, et j'ai toujours besoin de me planter pour enregister ;)
[^] # Re: Docs
Posté par helmut . En réponse au message utilisation de libtar. Évalué à 1.
Je suis nouveau en c, et je pensais qu'en déclarant le pointeur, il n'y avait pas besoin d'allouer de la mémoire, puisque celui-ci utiliserait la mémoire déjà alouer par la fonction tar_open, dans la librairie correspondante...
Si c'est pas le cas, je comprend maintenant les fautes de segmentation que j'ai obtenu dans d'autre prog. Pourrais tu m'expliquer comment il faut procéder ici (ca me permettra de comprendre mon erreur)
J'ai bien acheté de livres, mais il manque parfois des exemples concrets, et j'ai toujours besoin de me planter pour enregister ;)
# merci à toi
Posté par helmut . En réponse au message utilisation de libtar. Évalué à 1.
Donc si j'ai bien compris, je revois le linkage et je décommente la ligne d'initialisation de la variable type ?
Un grand, grand merci pour ton aide ! J'espère que ca me permettra d'avancer
[^] # Re: Docs
Posté par helmut . En réponse au message utilisation de libtar. Évalué à 1.
[^] # Re: Docs
Posté par helmut . En réponse au message utilisation de libtar. Évalué à 1.
Voilà où je bute encore :
lorsque je veux utiliser la fonction,
j'obtiens le message suivant :
Or j'ai bien linké la libtar, et dans le manuel, il semble que la valeur de oflags ne peut-être que O_RDONLY ou O_WONLY...
Est-ce que je dois définir cette constante quelque part ?
[^] # Re: Docs
Posté par helmut . En réponse au message utilisation de libtar. Évalué à 1.
Voilà où je bute encore :
lorsque je veux utiliser la fonction,
j'obtiens le message suivant :
Or j'ai bien linké la libtar, et dans le manuel, il semble que la valeur de oflags ne peut-être que O_RDONLY ou O_WONLY...
Est-ce que je dois définir cette constante quelque part ?