C fonction stat()

Seiya0890 Messages postés 210 Statut Membre -  
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

j'ai un problème avec le premier argument de la fonction stat(),
https://man7.org/linux/man-pages/man2/stat.2.html
il me semble qu'il devrait s'agir d'une chaîne de caractère.

voici un expemple d'utilisation:

struct stat sb;

if (argc != 2) {
fprintf(stderr, "Usage: %s <pathname>\n", argv[0]);
exit(EXIT_FAILURE);
}

if (stat(argv[1], &sb) == -1) {
perror("stat");
exit(EXIT_FAILURE);
}

printf("File type: ");

switch (sb.st_mode & S_IFMT) {
case S_IFBLK: printf("block device\n"); break;
case S_IFCHR: printf("character device\n"); break;
case S_IFDIR: printf("directory\n"); break;
case S_IFIFO: printf("FIFO/pipe\n"); break;
case S_IFLNK: printf("symlink\n"); break;
case S_IFREG: printf("regular file\n"); break;
case S_IFSOCK: printf("socket\n"); break;
default: printf("unknown?\n"); break;
}

mon but ici est d'afficher des informations sur un repertoire ou fichier (ici désigné par argv[1] ) . Jusque la ça marche bien, le probleme c'est que pour certaines raisons j'ai absolument besoin de remplacer

stat(argv[1], &sb) == -1)

par

stat(strcat(chaine,argv[1]), &sb) == -1) // ou chaine est une chaine de caractere

malheureusement le "strcat(chaine,argv[1])" ne prend pas, même strcat("./",argv[1]) ne marche pas T_T . Est ce que quelqu'un pourrait m'aider svp ?

A voir également:

2 réponses

fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
Bonjour,
Quel est le message d'erreur ?
Comment est initialisé chaine ?
0
Seiya0890 Messages postés 210 Statut Membre 12
 
Bonsoir fiddy,

J'ai finalement trouvé la solution à mon problème c'est juste que j'avais initialiser chaine de cette maniere : char chaine[256], or il aurait fallu faire char *chaine, puis un malloc.

Merci quand même ^_^ .
0
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
Que nenni !
Cela fonctionne très bien avec char chaine[256];
Encore faut-il initialiser chaîne à {0} pour que strcat fonctionne.
Ou alors tout simplement, utiliser strcpy( ou mieux strncpy).
0
Seiya0890 Messages postés 210 Statut Membre 12
 
j'ai essayer mais que ce soit avec strcat ou strcpy
j'avais a chaque fois un message d'erreur du genre cannot assign char[256] from char *
0
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
Probablement car tu l'as mal fait.
Mais comme on a pas le code avec la nouvelle version. Je peux pas dire.
0