utilisation et modification de nom de fichier - C++ - Programmation
Marsh Posté le 10-05-2003 à 10:37:51
Code :
|
Marsh Posté le 10-05-2003 à 11:04:15
est ce qu il est possible d obtenir le meme resultat avec srpintf en gardant non comme tableau de caracteres et en faisant un unlink apres?
Marsh Posté le 10-05-2003 à 11:17:19
oui
remplace
strcpy(nom, argv[i]);
strcat(nom, ".l" );
par
sprintf(nom, "%s.l", argv[i]);
Marsh Posté le 10-05-2003 à 11:42:41
merci
Marsh Posté le 10-05-2003 à 11:52:13
Si effectivement tu veux créer le fichier .l a partir du nom original, tu devrais faire qque chose dans le genre suivant:
Code :
|
Tu verifies que tu as un nom en parametre, tu recuperes le repertoire courant, tu crees un nom absolu de fichier listing a partir du repertoire courant et de ton nom de fichier, tu verifies que le fichier correspondant n'existe pas, et s'il n'existe pas, tu le crée.
A+,
Marsh Posté le 10-05-2003 à 11:59:25
++Taz a écrit : on paralias de C ANSI jusqu'à présent |
Vu l'utilisation en commentaire de unlink dans le post initial, je subodore que c'est pour Unix/Linux qu'elle écrit son code.
A+,
Marsh Posté le 10-05-2003 à 12:07:23
++Taz a écrit : ben y a remove en ANSI |
remove et unlink ne sont pas pareil: remove encapsule a la fois unlink pour les nom de fichiers et rmdir pour les noms de repertoires).
A priori, s'il y a un remove, il y a aussi un unlink, non?
A+,
PS: Lirai la suite ce soir, la je vas baffrer, puis je vas sur Paris.
Marsh Posté le 10-05-2003 à 12:13:49
non, c'est l'inverse. remove ne vire que les fichiers puisque la notion de répertoire n'existe pas en C.
par contre unlink fait plus
voir le man 2 unlink
Marsh Posté le 10-05-2003 à 13:28:59
je dois programmer en C un assembleur qui tourne sous Linux
Marsh Posté le 10-05-2003 à 13:31:41
ben si les fonctions ANSI te satisfont, utilise les. sinon prends celles de l'API
Marsh Posté le 10-05-2003 à 14:12:11
++Taz a écrit : non, c'est l'inverse. remove ne vire que les fichiers puisque la notion de répertoire n'existe pas en C. |
Ce n'est pas ce que dit la man page unix:
Citation : REMOVE (3) |
Citation : UNLINK (2) |
A+,
Marsh Posté le 10-05-2003 à 14:51:14
oui mais c'est là une extension. fo faire gaffe aux man. y a ecrit ansi quand la focnton existe en ANSI, mais le comportement est souvent étendu. donc prudence
Marsh Posté le 11-05-2003 à 09:39:15
Sauf que dans ce cas precis, remove a ete inventée bien apres unlink et rmdir. Alors parler d'extension...
En fait, au départ, remove devait juste remplacer unlink; c'est suite a des questions posées au comité de standardisation qu'elle a aussi remplacé rmdir. Voir par exemple ce document: http://www.pasc.org/interps/unoffi [...] .1-59.html
Personellement, quite a se conformer a un standard, je preferre POSIX.
A+,
Marsh Posté le 11-05-2003 à 09:46:59
Et pis de toute facon, Microsoft (le standard de facto, non? )préconise l'emploi de System.IO.File.Delete
Code :
|
A+,
Marsh Posté le 10-05-2003 à 10:31:58
#include <stdio.h>
int main (char *argv[]) {
char nom_listing [100] ;
strcpy (nom_listing, argv[1]) ;
printf ("%s", nom_listing) ;
strcat (nom_listing, ".l" ) ;
printf ("%s", nom_listing) ;
// unlink (listing);
}
en fait je voudrais utiliser le nom_de_fichier pointe par argv[1]
afin de creer un nouveau fichier s appelant nom_de_fichier.l
le probleme doit etre dans mon utilisation de argv[1]
j obtiens Bus Error (core dumped)
---------------
Les accents sont en option... j'ai un clavier qwertz.