Aidez un noob!! ?clik:clik pa - C - Programmation
Marsh Posté le 05-12-2004 à 14:36:05
SuperGreu a écrit : voila, je voudrais créer un programme qui entre autre ouvre un fichier dont le chemin d'accès contient des variables. |
Tu veux dire une chaine élaborée à partir de variables, comme
"NOM_<num>.txt" avec num ::= "000"-"999"
par exemple ?
Il faut définir un tableau de char de taille adaptée. (malloc() peut aider à faire du code 'autodémerdant').
Ensuite, il faut utiliser sprintf() (ou snprintf() en C99) pour écrire la chaine avec les conversions qui vont bien.
Code :
|
Marsh Posté le 05-12-2004 à 18:49:26
rien du tout en fait je veu juste vérifier si le fichier existe...:S
Marsh Posté le 05-12-2004 à 18:52:45
fopen est une fonction ...
en revanche tu peux tester la valeur de retour de la fonction fopen
man fopen
Marsh Posté le 05-12-2004 à 19:19:13
je crois que le pb viens surtout du fait que dans mon premier exemple le programme ouvre c:\\...\\cùdric alor que quand je passe cette adresse via une chaine il ouvre c:\\...\\cédric ...qu'est-ce que vous en pensez et qu'est-ce que je peux faire pour que les 2programmes ouvrent le meme fichier (cf premier topic)
Marsh Posté le 05-12-2004 à 19:45:27
en gros :quand p = c:\\...\\cùdric sur la console ca marche
et quand p=c\\...\\cédric ca marche pa...
(jentends par ù lespece de U avec un accent aigu)
Marsh Posté le 05-12-2004 à 22:31:52
bien sur que si. Le C ne sait même pas ce que c'est de toutes façons. Ça marche très bien
Marsh Posté le 05-12-2004 à 23:06:35
SuperGreu a écrit : |
déjà c'est pas normal que ça affiche des double "\"
SuperGreu a écrit : |
dans le fichier il faut des simples "\"
ce n'est que dans le code C que le "\" a un rôle spécial, pas dans les données lues...
Et pour le mélange des accents, c'est simplement que la console Windows n'utilise pas le même jeu de caractères que Windows j'imagine...
Marsh Posté le 06-12-2004 à 17:26:35
ok jai reessayé et j'ai fais ce que vous m'avez dit mais malheureusement ca ne résoud pas le problème . cette fois ca maffiche avec un fgets et un puts(p):C:\Documents and Settings\Mes Documents\Ma musique\Rammstein.wma
et ca marche toujours pas....je comprend vraiment pas !
Marsh Posté le 06-12-2004 à 17:28:42
C'est quoi le code actuel ? parce qu'avec le fopen bizarre...
Marsh Posté le 06-12-2004 à 17:43:38
void main (void)
{char utilisateur[30],fic[100],*p;
FILE*test;
sprintf(fic,"C:\\Documents and Settings\\%s\\Mes Documents\\Ma musique\\Rammstein.wam",utilisateur);
p=fic;
test=fopen(p,"r" );
puts(p);
if(!test){} else
{fclose(test);
remove (p);}}[cpp]
je crois que c'est ca.PS: je n'ai pas copier la premiere partie du programme, mais on connait deja utilisateur.
sinon jen profite pour poser une question : pourquoi scanf suivi de puts ou printf naffiche pas les accents tandis qu'un fscanf suivi de puts ou printf le fait?
voila, merci d'avance!
Marsh Posté le 06-12-2004 à 17:57:36
et en quoi ça ne marche pas dans ton code actuel ?
parce que tu ne fais rien avec le fichier à part l'ouvrir et le fermer...
(enfin, faudrait peut-être donner une valeur à "utilisateur" )
Marsh Posté le 06-12-2004 à 18:01:51
bah on connai deja la valeur d'utilisateur
dans le cas d'un utilisateur ="cédric",ca ne marche pas.
et puis remove c bien pour supprimer un fichier nan? :S
Marsh Posté le 06-12-2004 à 19:47:38
Taz a écrit : bien sur que si. Le C ne sait même pas ce que c'est de toutes façons. Ça marche très bien |
j'en ai mare d'apprendre des mauvaises choses en cours
m'enfin, les accents dans le code j'aime pas donc c'est rien :]
Marsh Posté le 05-12-2004 à 14:13:43
voila, je voudrais créer un programme qui entre autre ouvre un fichier dont le chemin d'accès contient des variables. Pour ca, j'ai fais un fprintf dans un fichier, que je supprime apres avoir fait un fscanf.
TAB contient donc le chemin d'accès complet, mais fopen(*p=TAB,"r" ) ne fonctionne pas correctement.
La, ca marche :
et ca affiche c:\\Documents and Settings\\Cùdric\\Ma musique\\Rammstein.wma
jusque la pas de problème,mais quand je fais avec un fscanf du fichier txt contenant le chemin d'accès p=c:\\Documents and Settings\\Cédric\\Ma musique\\Rammstein.wma et puis ca ouvre rien du tout.
Si vous avez lu jusque la, deja merci, et puis si vous pouvez me dire quoi faire encore plus merci!
A+