Quelques problèmes de fichiers + chemins d'accès

Quelques problèmes de fichiers + chemins d'accès - C - Programmation

Marsh Posté le 09-10-2007 à 09:33:01    

Bonjour,
 
J'ai codé un petit programme dont voici le principe :
1/ Il ouvre un fichier avec plein de données
2/ Il prend les 2000 premières lignes du fichier, les copie dans un fichier 01_DOS. Ensuite il prend les 20 prochaines, les copies dans 02_DOS, etc. jusqu'à ce qu'il arrive à la fin du fichier.
 
Actuellement, j'ai en gros 110.000 lignes dans le fichier source, il crée donc 96 fichiers, tous appelés 01_DOS, 02_DOS, ..., 96_DOS.
 
Voici les quelques lignes de code que j'ai utilisé pour créer ces fichiers :
 

Code :
  1. snprintf(dosFilePath, LONG, "%d", atomCount) ; //atomCount est juste un compteur qui s'incrémente de 1 en 1.
  2. strcat(dosFilePath, "_DOS" ) ;


 
Donc en gros, supposons que atomCount = 1, la première commande me permet d'avoir dosFilePath = "1" puis ensuite avec la concaténation "1_DOS".
 
Ensuite j'ouvre le fichier de cette façon :
 

Code :
  1. fopen(dosFilePath, "a" ) ;


 
A priori, on peut penser que ça fonctionne bien, mais moi j'aimerais plutôt avoir des fichiers de la forme : DOS_01, DOS_02, ..., DOS_96.
 
Seulement, avec la commande strcat, beh le terme que je rajoute doit être une constante. Donc je peux pas le modifier pour que ce soit un coup 1, puis 2, puis 3, etc.
 
Quelqu'un aurait une alternative au strcat ?
 
Merci d'avance !

Reply

Marsh Posté le 09-10-2007 à 09:33:01   

Reply

Marsh Posté le 09-10-2007 à 09:34:30    

sprintf

Reply

Marsh Posté le 09-10-2007 à 10:34:35    

Euh oui en effet...
 
Je me compliquais la vie pour rien là.
 
Merci beaucoup.
 
Une autre question au passage : J'utilise la commande mkdir pour créer un répertoire.
 
Sauf que je ne comprends pas très bien comment fonctionne le second argument :
Lorsque je mets :

Code :
  1. mkdir("DOS_FILES" )


Il me crée un répertoire mais je n'ai pas les droits d'accès pour y écrire.
 
Lorsque je mets :

Code :
  1. mkdir("DOS_FILES", 755)


Il me fait un truc chelou que je ne comprends pas...
 
Edit : En fait c'était la grosse feinte. Il fallait préciser les droits en "octal", donc mettre un zéro devant :

Code :
  1. mkdir("DOS_FILES", 0755)


Là ça marche.

Message cité 1 fois
Message édité par Sinner le 09-10-2007 à 11:33:50
Reply

Marsh Posté le 09-10-2007 à 13:08:59    

En fait ce que tu fais c'est la commande "split", non ?

Reply

Marsh Posté le 12-10-2007 à 18:33:21    

Sinner a écrit :

Edit : En fait c'était la grosse feinte. Il fallait préciser les droits en "octal", donc mettre un zéro devant :

Code :
  1. mkdir("DOS_FILES", 0755)


Là ça marche.


Eh oui, c'est bien pour ça qu'on parle de droits "octal" dans le chmod...
 
Pour info, ton truc "chelou", sous Unix, devrait donner les droits -wxrw--wt (valeur 1363 correspondant à 755 converti en octal)


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed