Bonjour je suis entrain d'apprendre la programmation en c et il me demande de créé un fichier test.txt dans le même dossier que .exe mais je ne sais pas où est le .exe mais je sais ou est textedit, je suis perdu. Pourriez-vous me dire comment faire je suis sous macos dernière versions. merci
- Edité par LosseniKaramoko3 16 octobre 2023 à 13:38:28
En compilant le code source. (Quand je dis compiler, c'est bien sûr la compilation suivi de l'édition des liens).
Mais ta question m'étonne un peu, dans tes sujets précédent tu as bien compilé des codes qui aurait du produire des exécutables (Il n'en ont peut-être pas produit à cause des erreurs si tu ne les a pas corrigées).
Après avoir poster mes demandes sur le forums tout a bien compiler sans erreur. Mais il me demande de créé un fichier .txt dans un dossier .exe sauf que je ne sais pas commment créé un dossier .exe etant sur macos. Quand je vais fais le test de savopir si je peux bien ouvrir le fichier .txt dans le dossier .exe il me renvoie l'erreur comme quoi il est impossible d'ouvrir le fichier .txt ayant créé une condition pour pouvoir savoir ça.
Dois-je faire appel a une machine virtuel juste pour créé un executable sa fais long et je dois encore apprendre de nouveau truc, je pense qu'il y'a une solution plus simple mais je ne sais pas laquelle
- Edité par LosseniKaramoko3 10 octobre 2023 à 12:50:18
Ah non, d'après ce que tu disais hier il ne s'agit pas de créer un dossier .exe
Tu as dit : « il me demande de créé un fichier test.txt dans le même dossier que .exe »
C'est pas pareil ! Ce dossier existe, c'est celui où ton compilateur range l'exécutable. C'est à toi de savoir où il le range. Ça ne dépend pas du langage, mais du compilateur ou, plus probablement, de l'IDE que tu utilises. C'est probablement un des réglages de l'IDE. Tu en utilises un ?
Je n'utilise pas d'IDE (trop compliqué pour moi), je compile en ligne de commande (il me semble que tu peux le faire sur Mac), ainsi je sais toujours où le compilateur va mettre l'exécutable : dans le répertoire d'où je compile, c'est-à-dire celui qui contient le fichier source. C'est simple, et c'est moi qui décide (pas un logiciel compliqué que je ne maîtrise pas). Le fichier .txt, ben je sais où le mettre : dans le répertoire d'où je compile, le même que celui où j'ai mis le fichier source (pour faire de petits exercices, je ne m'amuse pas à créer une arborescence Projet/Debug/etc.)
Bref, je te recommande de maîtriser ton IDE, ou bien de compiler en ligne. C'est juste mon avis.
Il doit être situé dans le même dossier que votre exécutable ( .exe ).
(exe) c'est pour windows mais sous macOS l’extension sera différente. (Bon je l'ai déjà dit).
Je ne connait pas XCode mais ton exécutable doit pas être bien loin du fichier source de ton code.
sinon dans ton code tu peux ouvrir ton fichier en écriture "w" au lieu de "r+". Le fichier test.txt sera créé à l'exécution de ton programme. (Ça t'aidera peut-être pour la recherche de l'exécutable).
D'après ce que j'ai lu (par exemple ici), les fichiers exécutables sur mac n'ont pas une extension particulière. Simplement un flag qui indique que le fichier est un exécutable.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Si on suppose que l'IDE "se place" dans le dossier qui contient l'exécutable quand on lui demande de l'exécuter, alors l'appel fopen("test.txt",....) fabriquera (ou ira chercher) le ficher test.txt dans ce même répertoire.
"Se placer dans", c'est la notion de répertoire courant (working directory)
Et ici on utilise un chemin relatif, comme le paramètre "test.txt" ne commence pas par /, c'est une position exprimée à partir du répertoire courant.
Dossier = repertoire
Selon les IDE (et les options de configuration) , le répertoire courant quand on exécute un programme peut être
Le répertoire de l'exécutable
Le répertoire du projet
Quelque chose d'autre, comme un répertoire temporaire
Il faut donc faire un essai pour voir ce qu'il en est. Ce qui implique de se servir de "l'explorateur de fichiers" pour trouver où ce foutu fichier a été créé en réalité.
Et du coup, on sait ce qui se passe, et on arrête de supposer.
- Edité par michelbillaud 11 octobre 2023 à 8:28:46
Je croyais que MacOS se comportait un peu comme Unix / Linux?
Il y a une commande "find" sur ces systèmes pour trouver un fichier.
Si tu te places sur ton "home", tu pourrais essayer:
find . -name test.txt
et il devrait te donner le chemin où se trouve ce fichier.
Il me semble qu'on faisait cd ~ pour se retrouver sur son home.
-
Edité par PierrotLeFou il y a environ 18 heures
J'ai fais ce que tu m'a dis et il me renvoie pas le chemin colmme quoi l'oparation n'est pas autorisé voici la commande :
Last login: Sun Oct 15 09:56:08 on ttys001
karamoko@Losseni ~ % find . -name test.txt
./Desktop/test.txt
find: ./Library/Application Support/CallHistoryTransactions: Operation not permitted
find: ./Library/Application Support/CloudDocs/session/db: Operation not permitted
find: ./Library/Application Support/com.apple.sharedfilelist: Operation not permitted
find: ./Library/Application Support/Knowledge: Operation not permitted
find: ./Library/Application Support/com.apple.TCC: Operation not permitted
find: ./Library/Application Support/FileProvider: Operation not permitted
find: ./Library/Application Support/AddressBook: Operation not permitted
find: ./Library/Application Support/FaceTime: Operation not permitted
find: ./Library/Application Support/com.apple.avfoundation/Frecents: Operation not permitted
find: ./Library/Application Support/CallHistoryDB: Operation not permitted
find: ./Library/Assistant/SiriVocabulary: Operation not permitted
find: ./Library/Daemon Containers: Operation not permitted
find: ./Library/Autosave Information: Operation not permitted
find: ./Library/IdentityServices: Operation not permitted
./Library/Developer/Xcode/DerivedData/fichiers-ftcrbjkxsnpwchdilhkgzurwmugw/Build/Products/Debug/test.txt
./Library/Developer/Xcode/DerivedData/fichiers-cpavhzbgycxjcrhbktfpstdbdeky/Build/Products/Debug/test.txt
find: ./Library/Calendars: Operation not permitted
find: ./Library/Messages: Operation not permitted
find: ./Library/HomeKit: Operation not permitted
find: ./Library/Sharing: Operation not permitted
find: ./Library/com.apple.aiml.instrumentation: Operation not permitted
find: ./Library/Mail: Operation not permitted
find: ./Library/Trial: Operation not permitted
find: ./Library/AppleMediaServices: Operation not permitted
find: ./Library/DuetExpertCenter: Operation not permitted
find: ./Library/Accounts: Operation not permitted
find: ./Library/Safari: Operation not permitted
find: ./Library/Biome: Operation not permitted
find: ./Library/IntelligencePlatform: Operation not permitted
find: ./Library/Shortcuts: Operation not permitted
./Library/Mobile Documents/.Trash/test.txt
find: ./Library/Suggestions: Operation not permitted
find: ./Library/Weather: Operation not permitted
find: ./Library/Group Containers/group.com.apple.stocks-news: Operation not permitted
find: ./Library/Group Containers/group.com.apple.photolibraryd.private: Operation not permitted
find: ./Library/Group Containers/group.com.apple.accessibility.voicebanking: Operation not permitted
find: ./Library/Group Containers/group.com.apple.stocks: Operation not permitted
find: ./Library/Group Containers/group.com.apple.secure-control-center-preferences: Operation not permitted
find: ./Library/Group Containers/group.com.apple.chronod: Operation not permitted
find: ./Library/Group Containers/group.com.apple.gamecenter: Operation not permitted
find: ./Library/Group Containers/group.com.apple.tips: Operation not permitted
find: ./Library/Group Containers/group.com.apple.ManagedSettings: Operation not permitted
find: ./Library/Group Containers/group.com.apple.weather: Operation not permitted
find: ./Library/Group Containers/group.com.apple.notes: Operation not permitted
find: ./Library/Group Containers/group.com.apple.tipsnext: Operation not permitted
find: ./Library/Group Containers/group.com.apple.reminders: Operation not permitted
find: ./Library/Group Containers/group.com.apple.mail: Operation not permitted
find: ./Library/Group Containers/com.apple.bird: Operation not permitted
find: ./Library/Group Containers/group.com.apple.DeviceActivity: Operation not permitted
find: ./Library/Group Containers/com.apple.Home.group: Operation not permitted
find: ./Library/Group Containers/group.com.apple.iCloudDrive: Operation not permitted
find: ./Library/Group Containers/group.com.apple.Photos.PhotosFileProvider: Operation not permitted
find: ./Library/Group Containers/group.com.apple.PegasusConfiguration: Operation not permitted
find: ./Library/Containers/com.apple.VoiceMemos: Operation not permitted
find: ./Library/Containers/com.apple.archiveutility: Operation not permitted
find: ./Library/Containers/com.apple.Maps/Data/Maps: Operation not permitted
find: ./Library/Containers/com.apple.Home: Operation not permitted
find: ./Library/Containers/com.apple.Safari: Operation not permitted
find: ./Library/Containers/com.apple.CloudDocs.MobileDocumentsFileProvider: Operation not permitted
find: ./Library/Containers/com.apple.mail: Operation not permitted
find: ./Library/Containers/com.apple.MobileSMS: Operation not permitted
find: ./Library/Containers/com.apple.Notes: Operation not permitted
find: ./Library/Containers/com.apple.corerecents.recentsd/Data/Library/Recents: Operation not permitted
find: ./Library/Containers/com.apple.stocks: Operation not permitted
find: ./Library/ContainerManager: Operation not permitted
find: ./Library/PersonalizationPortrait: Operation not permitted
find: ./Library/Metadata/CoreSpotlight: Operation not permitted
find: ./Library/Metadata/com.apple.IntelligentSuggestions: Operation not permitted
find: ./Library/Cookies: Operation not permitted
find: ./Library/com.apple.bluetooth.services.cloud/CachedRecords/SoundProfileAsset: Operation not permitted
find: ./Library/CoreFollowUp: Operation not permitted
find: ./Library/StatusKit: Operation not permitted
find: ./Library/DoNotDisturb: Operation not permitted
find: ./Library/Caches/com.apple.HomeKit: Operation not permitted
find: ./Library/Caches/CloudKit: Operation not permitted
find: ./Library/Caches/com.apple.Safari: Operation not permitted
find: ./Library/Caches/com.apple.containermanagerd: Operation not permitted
find: ./Library/Caches/FamilyCircle: Operation not permitted
find: ./Library/Caches/com.apple.homed: Operation not permitted
find: ./Library/Caches/com.apple.findmy.fmipcore: Operation not permitted
find: ./Library/Caches/com.apple.ap.adprivacyd: Operation not permitted
find: ./.Trash: Operation not permitted
karamoko@Losseni ~ %
Quoique je pense que à la première ligne il me dise qu'il est dans le desktop donc, c'est un dossier que j'ai cré om j'y ai intégré un textedit. Mais quand je fais la commande pour ajouter un caractère avec fputc et bien aucun caractère s'affiche.
Et pour michelbillaud j'ai bien compiler executer etc.. Mais je n'arrive toujours pas à voir le fichier nulle part c'est vraiment trop bizzarre...
Pourtant tou compile et le fichier avec w marche puis j'ai fais r+ a marche mais je le trouve pas :
Faire des fopen pour ouvrir un fichier en écriture c'est bien, mais y ajouter quelques fprintf pour le remplir, et terminer le travail par fclose, c'est pas mal non plus.
Et si on cherche le fichier nouveau.txt, c'est pas avec -file test.txt que ca va le faire.
PS pour ne pas voir les messages d'erreurs de find liés aux répertoires non-visitables, rediriger la sortie d'erreurs
find . -name "*.txt" 2>/dev/null
- Edité par michelbillaud 15 octobre 2023 à 18:01:46
C'est pouvoir écrire un caractere comme 'A' dedans dans un textedit c'est ce qui est demander dans le cours mais qu'il faut que j'enregistre ça dans un dossier executable pour que je puisse lire le contenu.
Et la question quand je disais que faire : où aller pour trouver le fichier après avoir vu que la commande a trouver le fichier, où allez pour le retrouver et l'ouvrir ? Car après avoir insérer des caractére je dois ouvrir le fichier (textedit) nommé "test.txt" et voir le caractère écrit dessus
- Edité par LosseniKaramoko3 16 octobre 2023 à 13:14:08
Alors ce que je te propose, c'est de recommencer depuis le début. (je ne connais pas xCode). Tu créés un nouveau projet, tu lui donnes un nom que tu retiens dans ta tête, mais avant de l'enregistrer, il y a un champs qui indique le dossier où l'enregistrer et que tu peux changer si tu le souhaites, tu le retiens aussi dans ta tête. Le projet une fois créé, le dossier de ton code sera un sous dossier de ce dossier du nom de ton projet.
Je pense aussi que tu peux retrouver le chemin du dossier dans les propriétés du projet dans xcode.
Sinon, se familiariser avec les notions de fichiers dossier avant de coder.
C'est plus efficace de noter sur un papier à côté du clavier que dans sa tête (*). Et si c'est important, le marquer en commentaire dans le source.
Ps Un dossier exécutable, ça n'existe pas. Si il s'agit d'un dossier qui a le droit "x", il s'agit d'un dossier TRAVERSABLE. X comme "cross (en) = traverser (fr) (**), alors que pour les fichiers c'est eXecutable
(*) ou pire dans un fichier qu'il faudra chercher, ouvrir, etc quand on en aura besoin, à supposer qu'on se souvienne qu'il existe (à un moment où on a déjà trop de choses en tête, comme savoir de qu'on veut faire exactement, par exemple)
(**) les jeux de mots à la con des informaticiens barbus des années 70
- Edité par michelbillaud 17 octobre 2023 à 12:16:07
Tant que tu ne décris pas PRECISEMENT ce qui ne fonctionne pas (le code, ce qu'il y a dans les dossiers, la manière de lancer l’exécutable etc) personne ne peut te dire pourquoi "ça" ne marche pas.
- Edité par michelbillaud 23 octobre 2023 à 16:53:39
J'ai fais comme rouloude m'a dit créé un nouveau projet donnez un nom que je tiens dans ma tête l'enregistrer etc...sauf qu'on ne peut pas créé de sous-dossier dans xcode.Et j'ai mis les même codes que je vais ai montrer plus haut. Rien ne marche parcontre, quand je met "w" ça me créé un fichier et quand je met "r+" et que je demande de savoir si le fichier s'ouvre ou pas ça me renvoie la valeur 0 ce qui veut dire que le fichier est bien créé et que je peux le lire et écrire dedans, sauf que je ne le trouve vraiment nulle part.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Le Tout est souvent plus grand que la somme de ses parties.
Est-ça ?