Probleme de chemin absolu

Fermé
boralex9 Messages postés 2 Date d'inscription jeudi 7 août 2014 Statut Membre Dernière intervention 7 août 2014 - 7 août 2014 à 15:49
sambia39 Messages postés 610 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 9 février 2023 - 8 août 2014 à 12:38
Bonjour !

Je me trouve devant un problème assez fatiguant à résoudre ( 5h de temps passées à essayer tout seul et avec des sites de langue anglaise) qui est que le chemin absolu que je mets en paramètre de fopen ne marche pas ni avec xcode ( " use of undeclared identifier") ni dans sublime text 2 qui sont les IDE que j'utilise.

Je suis sur un mac et même si je ne mets pas le tilde(~) cela ne fonction pas.
j'avais fait l'effort aussi d'insérer lorsque j'utilisais xcode le fichier.txt dans le même dossier que "l'exécutable" même si exécutable n'existe pas sous mac. (peine perdue ça ne marche pas plus)

De toute façon en utilisant un chemin absolu je n'aurais même pas dû faire tout cela.

Donc voilà.

en outre, mon fichier.txt est placé sur le bureau ( j'ai fait ça là histoire de simplifier le chemin pour que vous puissiez tous voir que ce n'est pas une erreur d'écriture de chemin);

Si quelqu'un a une idée bah qu'il n'hésite pas :) merci d'avance !

Voici mon code en C


#include<stdio.h>
#include<stdlib.h>


int main( int argc, char* argv[])
{


FILE* fichier = NULL;
fichier = fopen(~/Desktop/texte.txt, "r+");


if(fichier != NULL)
{

char identite[] = "";
printf(" Qui êtes vous ?\n\n");
scanf("%s", identite);

fprintf(fichier, "Bonjour Monsieur %s", identite);
fclose(fichier);

}

return 0;
}

2 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 840
7 août 2014 à 17:17
Bonjour,

fichier = fopen(~/Desktop/texte.txt, "r+");
~ est connu par ton OS mais pas par la fonction C. Il faut donc mettre clairement le chemin. De plus, il doit être entre des guillemets ; ce n'est pas une variable.

char identite[] = "";
Cela déclare un tableau d'un char. Tu ne pourras donc pas stocker de caractères avec scanf("%s"). Fais plutôt
char identite[25];


Note : merci la prochaine fois d'écrire ton programme entre 2 balises "code c" lorsque tu postes ton code sur CCM.
Exemple :
/*ici tu mets ton code*/

Ca sera plus lisible.

Cdlt,
2
sambia39 Messages postés 610 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 9 février 2023 49
8 août 2014 à 12:38
Bonjour,
En complément à la réponse de @fiddy et ce que tu souhaites faire @boralex9 ,une simple définition du terme apporte plus de précision
tout d'abord il existe deux types d'écritures bien distinctes qui ont chacune leur spécificité
le chemin relatif & le chemin absolu
Dans ton exemple et ce que tu à fait "@boralex9 " est un chemin relatif comme dit @fiddy propre au système d'exploitation, et cela ne marche pas en langage c , pour que cela fonction il faut utiliser l'autre méthode c'est à dire fournir le chemin complet ou ce trouve le fichier dit chemin absolue.

à bientôt
0
boralex9 Messages postés 2 Date d'inscription jeudi 7 août 2014 Statut Membre Dernière intervention 7 août 2014
7 août 2014 à 23:53
Merci beaucoup fiddy :)
0