Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
984 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Creation de N fichiers...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Creation de N fichiers...

n°284255
FabienM
Posté le 11-01-2003 à 19:12:20  profilanswer
 

Je souhaiterai creer N fichiers dont le nom est contenu dans un autre fichier.
Par exemple:
un fichier contenant N chaines de caracteres (lundi, mardi, mercredi, etc....)
et au final je souhaiterai obtenir lundi.txt, mardi.txt, etc ...
 
Comment adapter la commande suivante ?
 

Citation :

f = fopen("C:\ ?????.txt", "w" )


 
Le tout en C.
Merci !
 
 
 

mood
Publicité
Posté le 11-01-2003 à 19:12:20  profilanswer
 

n°284257
Carbon_14
Posté le 11-01-2003 à 19:14:44  profilanswer
 

Les noms de futur fichiers contenus dans le premier fichier, ils sont ligne par ligne, ou bout à bout avec caractère séparateur ?
 
Avec QBasic du DOS, ça se fait rapidement, a priori.


Message édité par Carbon_14 le 11-01-2003 à 19:15:35
n°284259
FabienM
Posté le 11-01-2003 à 19:18:35  profilanswer
 

Il sont bien ligne par ligne.

n°284279
Carbon_14
Posté le 11-01-2003 à 19:55:28  profilanswer
 

Ces fichiers feront 0 octets ?
Le C est obligatoire ? C'est pour un exercice ?

n°284313
FabienM
Posté le 11-01-2003 à 21:11:14  profilanswer
 

Non les fichiers ne feront pas 0 octet car par la suite ils seront remplis.
Et bien oui le C est obligatoire...car je suppose ken C++ c beaucoup plus simple.
Ce ke j'ai donnée tout à l'heure c'etait un exemple...
car concretement j'ai besoin de creer une page HTML avec des liens vers d'autres pages HTML qui contiendront des infos (qui porte le nom contenu ds un fichier).

n°284315
Carbon_14
Posté le 11-01-2003 à 21:19:54  profilanswer
 

Je me suis fait mon générateur de pages HTML pour mon site ouèbe en QBasic pour aller vite, et les pages dérivent du nom des photos (photo.htm) que j'ai récupéré par la commande Dir *.jpg > liste.txt.
 
Ca ressemble pas mal !!
 
Ca passera en C plus tard (manque de temps entre deux consultation de HFR :D).

n°284325
FabienM
Posté le 11-01-2003 à 21:31:27  profilanswer
 

Ouai c comme sur ton site (y a de tres belle photo au passage).
Mais c pour une autre utilisation.

n°284327
qxn
Posté le 11-01-2003 à 21:34:11  profilanswer
 

bon j'avais kkes minutes devant moi alors voila :
 

Code :
  1. #include <stdio.h>
  2. #define MAX_TAILLE  9
  3. int main(int argc, char *argv[])
  4. {
  5.     FILE *test;
  6.     FILE * donnee;
  7.     int Nb_fichier=0;
  8.  
  9.   donnee= fopen("donnee.txt","r" );
  10.   if (donnee==NULL)
  11.   {
  12.     printf("Fichier source introuvable" );
  13.   }
  14.  
  15.   while(!feof(donnee))
  16.   {
  17.    
  18.     char fichier[MAX_TAILLE];
  19.  
  20.     fgets(fichier,MAX_TAILLE,donnee);
  21.     printf("Création du fichier %s",fichier);
  22.     test=fopen(fichier,"wt" );
  23.       if (test == NULL)
  24.       {
  25.             printf("Erreur lors de la création du fichier %s",fichier);
  26.       }
  27.    
  28.       Nb_fichier++;
  29.      fclose (test);
  30.   }
  31.  
  32.   fclose (donnee);
  33.  
  34.   printf("Nombre de fichier créer : %d",Nb_fichier);
  35.   system("PAUSE" );
  36.   return 0;
  37. }


 
Amicalement Qxn

n°284329
qxn
Posté le 11-01-2003 à 21:37:10  profilanswer
 

un petit detail neanmoi ton fichier qui contient les données a savoir le  

Code :
  1. donnee= fopen("donnee.txt","r" );


doit contenir les information ligne a ligne ( sur une ligne uniquement un nom rien de plus)
 
par contre le prog que je t'ai fais comporte kkes limitations (ba vi fo que tu bosse un peu lol ) a savoir que le premier parametre de fopen doit avoir le \0 coller donc tes noms doivent tous avoir la meme taille ( #definie MAX_TAILLE) pask si le "\0" n'est pas juste a coté du nom de fichier le fopen l'acceptera pas mais si tu taff un peu tu peu corriger ca aisement ;)

n°284332
FabienM
Posté le 11-01-2003 à 21:43:23  profilanswer
 

Je n'est pas demandé que tu me le fasse! Mais merci car bon un exemple vaut bien de longue phrases...
 
Merci encore Qxn c bien sympa ;)
 

mood
Publicité
Posté le 11-01-2003 à 21:43:23  profilanswer
 

n°284335
qxn
Posté le 11-01-2003 à 21:49:20  profilanswer
 

FabienM a écrit :

Je n'est pas demandé que tu me le fasse! Mais merci car bon un exemple vaut bien de longue phrases...
 
Merci encore Qxn c bien sympa ;)
 
 


 
ba javais rien a faire c pour ca lol mais tu dois juste faire une fonction en plus pour pouvoir créer des fichier de tailles differente ( je l'ai faite en attendant si tu butte je te la file )
j'espere que tu as compris en regardant le code le but final etant que tu comprenne ;)

n°284339
FabienM
Posté le 11-01-2003 à 21:54:50  profilanswer
 

Pour l'instant juste une petite precision sur

Code :
  1. test=fopen(fichier,"wt" )


à quoi correspond le "t" comme mode d'ecriture ??

n°284342
qxn
Posté le 11-01-2003 à 21:56:55  profilanswer
 

FabienM a écrit :

Pour l'instant juste une petite precision sur

Code :
  1. test=fopen(fichier,"wt" )


à quoi correspond le "t" comme mode d'ecriture ??


 
t= texte
b= binaire
 
voila ;) man fopen ;)

n°284360
FabienM
Posté le 11-01-2003 à 22:28:11  profilanswer
 

mais là il va me creer des fichiers ki n'auront pas d'extension ??
 
à l'execution j'obtiens erreur sur la creation des fichiers et de plus il me retourne 2N fichiers crée alors ke le fichier de depart en contient ke N...
 
eclaire moi un peu sur cette erreur

n°284364
Carbon_14
Posté le 11-01-2003 à 22:33:48  profilanswer
 

Faut l'adapter, c'est une "ligne directrice", une arrête, une épure.
 
fgets(fichier,MAX_TAILLE,donnee);
strcat(fichier, ".txt" ); // ajoute .txt à la fin du nom du fichier si y a assez d'espace de prévu (à prévoir sinon écrase mémoire)
printf("Création du fichier %s",fichier);
 
Faudrait ainsi allonger la zone :
char fichier[MAX_TAILLE]; en char fichier[MAX_TAILLE + 4];
 
On peut aussi préciser où on veut le mettre en ajoutant avant le chemin.
 
On pourrait voir les 3 premières lignes de ce fichier pour voir si pas de pb de "dimension" ?
 
Je ne sais plus si fopen peut créer un fichier quand existe pas, ou si ouvre déja existant. Sinon, y a le mode "a" qui crée si existe pas mais ajoute à la fin (append) si existe déja => ""dangereux"".
 
Pour ne pas compter les fichiers en échec, faudrait faire
if (test == NULL)
{
  printf("Erreur lors de la création du fichier %s",fichier);
}
else
{            
  Nb_fichier ++;
}
           


Message édité par Carbon_14 le 11-01-2003 à 22:41:34
n°284433
qxn
Posté le 12-01-2003 à 00:17:55  profilanswer
 

CARBON_14 a écrit :

Faut l'adapter, c'est une "ligne directrice", une arrête, une épure.

Code :
  1. fgets(fichier,MAX_TAILLE,donnee);
  2. strcat(fichier, ".txt" ); // ajoute .txt à la fin du nom du fichier si y a assez d'espace de prévu (à prévoir sinon écrase mémoire)
  3. printf("Création du fichier %s",fichier);


Faudrait ainsi allonger la zone :

Code :
  1. char fichier[MAX_TAILLE];


 en  

Code :
  1. char fichier[MAX_TAILLE + 4];


 
On peut aussi préciser où on veut le mettre en ajoutant avant le chemin.
 
On pourrait voir les 3 premières lignes de ce fichier pour voir si pas de pb de "dimension" ?
 
Je ne sais plus si fopen peut créer un fichier quand existe pas, ou si ouvre déja existant. Sinon, y a le mode "a" qui crée si existe pas mais ajoute à la fin (append) si existe déja => ""dangereux"".
 
Pour ne pas compter les fichiers en échec, faudrait faire
 

Code :
  1. if (test == NULL)
  2. {
  3.   printf("Erreur lors de la création du fichier %s",fichier);
  4. }
  5. else
  6. {           
  7.   Nb_fichier ++;
  8. }

         


 
ba rien a rajouter l'ami du carbon a tout dis je pense ;)

n°284521
FabienM
Posté le 12-01-2003 à 12:09:34  profilanswer
 

Merci encore a tous les 2.
 
PS: ca ne fait pas bien longtemps ke j'ai commencé à prog en C.


Message édité par FabienM le 12-01-2003 à 12:09:53
n°284526
Taz
bisounours-codeur
Posté le 12-01-2003 à 12:14:46  profilanswer
 

le mode "t" n'est pas standard et pour tout dire ne sert à rien.
 
le mode d'ouverture pas défaut est toujours le mode texte
 
sur les systemes faisant la différence entre les fichiers textes et les fichiers binaires, le mode "b" permet d'indiquer qu'on veut un mode d'acces binaire
 
 
tu veux du texte, pas de "t"
 
 
 
 

Citation :

t= texte
b= binaire
 
voila ;) man fopen ;)

je sais pas d'ou tu sors ton man toi, mais s'il y figure vraiment "t" il devrait y avoir une indiquation sur la portée de ce mode

n°284800
qxn
Posté le 12-01-2003 à 21:36:23  profilanswer
 

++Taz a écrit :

le mode "t" n'est pas standard et pour tout dire ne sert à rien.
 
le mode d'ouverture pas défaut est toujours le mode texte
 
sur les systemes faisant la différence entre les fichiers textes et les fichiers binaires, le mode "b" permet d'indiquer qu'on veut un mode d'acces binaire
 
 
tu veux du texte, pas de "t"
 
 
 
 

Citation :

t= texte
b= binaire
 
voila ;) man fopen ;)

je sais pas d'ou tu sors ton man toi, mais s'il y figure vraiment "t" il devrait y avoir une indiquation sur la portée de ce mode


 
 
ba pour ne rien te cacher sur mon man aussi ca y est pas et j'avais fais une recherche vite fais sur mon ami google et j'ai trouvé ca :  
 

Citation :

The mode parameter serves also to specify whether we want to open the file as text or binary, adding t or b characters to this access mode string. t Text mode. In text mode the end of file is assumed to be at first Ctrl-Z character. Some conversions can occur reading and writing with End Of Line / Feedback characters depending on your compiler and your Operating System.  
b Binary mode. End of file is reached at last byte of the file. No conversions.  
This additional t or b characters can be appended to the read/write mode at the end of the string (like "rb", "wt", "r+t", "w+b"...) or can be inserted between the letter and the + character (like "rt+", "wb+" ).
  If t nor b are given, it is used the default method (commonly t). In most compilers this default method is specified by the global variable _fmode defined in stdio.h.  


 
bref je t'en paste qu'un bout mais matte a cette url http://www.cplusplus.com/ref/cstdio/fopen.html
 
javais jamais vu ce t aussi avant de tomber sur ce site;)


Message édité par qxn le 12-01-2003 à 21:38:35
n°284804
Carbon_14
Posté le 12-01-2003 à 21:45:43  profilanswer
 

"If t nor b are given, it is used the default method (commonly t)."
Généralement, les gens ne mettent rien quand c'est "t", mais ne précisent que quand c'est "b".
Ca ne simplifie pas les lectures de code ! :)

n°284810
Taz
bisounours-codeur
Posté le 12-01-2003 à 22:04:52  profilanswer
 

ben c++.com se plante, j'ai déjà posté à ce sujet
 
bien que certains manuels décrivent ce mode, il n'est nullement ANSI. pour windows, quand on manipules des ficheirs en mode binaire, on le spécifie, sous *n*x, les fichiers sont de simples suite d'octets, donc lire en "" ou en "b" ne change rien

n°284815
Carbon_14
Posté le 12-01-2003 à 22:22:22  profilanswer
 

Comme quoi y a du ménage à faire !!
 
Quand on n'est pas du métier, on se fie à ce qui est écrit, et on se faire joyeusement "enduire" d'imprécision. :jap:

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Creation de N fichiers...

 

Sujets relatifs
[C++Windows] Problème de création de DLL de Hook, handle & coCopie de fichiers automatisé
[PHP ] Cherche script qui compte les fichiers d'un repertoire precis[PHP] Création du fichier
fichiers bat et windows xpProtection de fichiers
fichiers cobol et liste de chansons[Applet] Actions sur fichiers...
creation d´un planning -[delphi] débutant : Accès aux fichiers
Plus de sujets relatifs à : Creation de N fichiers...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR