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

Le langage C permet de créer des programmes rapides et proches de la machine

Modérateur : Francois

Répondre
Soranofus
Messages : 1
Enregistré le : mer. 15 mai 2019 11:33

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

Message par Soranofus » mer. 15 mai 2019 12:03

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);
}
}

destroyedlolo
Raspinaute
Messages : 1585
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

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

Message par destroyedlolo » mer. 15 mai 2019 15:07

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+
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

Répondre

Retourner vers « C / C++ »