Page 1 sur 1

Création d'un fichier texte dans un répertoire au nom aléatoire

Posté : mer. 15 mai 2019 12:03
par Soranofus
Bonjour !

Je viens de m'inscrire sur le forum, du coup si je fait quelques erreurs, veuillez me pardonnez !

Après ne pas avoir trouvé de solution sur internet, voici mon problème : J'aimerai pouvoir créer un fichier texte dans un répertoire au nom aléatoire. Je m'explique, mon projet consiste, à l'aide d'un lecteur laser, à scanner des codes barres puis, à chaque code barre scanné, créer un répertoire portant comme nom la valeur du code barre et ensuite créer un fichier texte dans ce répertoire. Je n'arrive donc pas à dire le chemin à prendre au fichier texte car le nom du répertoire est aléatoire. Pouvez vous m'aider ?

Voici le code (excusé les petites coquilles si il y en a) :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>

char dossier[100] = {0};
char cmd[110] = "";
FILE *txt;

int main()
{
while (1)
{
scanf("%s", dossier);

printf("Code barre : [%s]\n", dossier);

strcat(cmd, dossier);

sprintf(cmd, "Code barre/%s", dossier);

mkdir(cmd,0777);

txt = fopen("/home/pi/Desktop/Code barre/code barre.txt","w"); //<========== Le problème est ici, je n'arrive pas à dire le bon chemin

fwrite (dossier,1,sizeof(dossier),txt);

fclose(txt);
}
}

Re: Création d'un fichier texte dans un répertoire au nom aléatoire

Posté : mer. 15 mai 2019 15:07
par destroyedlolo
Salut,

On est d'accord que ton code est cracra n'est-ce pas ? tu ne vérifie a aucun moment si tes fonctions que tu appeles fonctionnent ou non.
Ensuite, tu ne vérifies pas que tu ne dépasses pas la taille de ton 'cmd' ... (qu'il serait d'ailleurs plus intelligent d'allouer dynamiquement dans la pile).
Ton strcat() gagnerait a etre remplacé par un strcpy() et du coup, il n'y a strictement aucune raison d'initialiser les tableaux, etc ...

Bref, en restant dans le code crade, ce que tu veux faire est simple :

Code : Tout sélectionner

...
mkdir(cmd,0777);
strcat(cmd,"/code barre.txt");

txt = fopen(cmd,"w"); 
...
A+