Acheté un livre didactique sur Cocoa...

:coucou:

Voilà après +- 25h d'apprentisage du C, je viens vous donner de mes nouvelles et ce même si vous n'en avez que faire :D

Je crois avoir assimiler les bases, je ne vais pas vous citer le contenu des chapitres que j'ai étudié, je n'en verrais pas l'intérêt. En revanche, voici les modestes programmes que j'ai créé en mode "Terminal":

mini-calculatrice (+-*/)
convertisseur €/$ (mais je n'ai trouvé le bon code pour obtenir les restes :( )
Micro-Jeu d'aventure en verbose (genre Zork) mais très très très simpliste! (fini en 5 min)


Je cale cependant sur un point très important : "La gestion des fichiers"

L'objectif de ce code primaire ne fonctionne pas! Mon IDE (CodeBlocks pour l'instant) compile correctement, le terminal execute le programme, et j'obtiens mon message d'erreur :hein:
Mais pourquoi donc mon fichier ne s'ouvre pas? :mad:
Le fichier "test.rtf" est pourtant placé dans le dossier de mon projet! J'ai même essayé de le placer dans le fichier "DEBUG" contenant mon exécutable UNIX mais rien y fait!

Bloc de code:
#include <stdlib.h>
#include <stdio.h>



int main(int argc, char *argv[])
{
    FILE* fichier = NULL;

    fichier = fopen("test.rtf", "r+");

    if (fichier != NULL)
    {
        // Lire et ecrire dans fichier test
    }
    else
    {
        // Si bug afficher message suivant
        printf("Petite pomme tu vas voler dans le pre\n");
    }

    return 0;
}

Oh une autre question: "Comment ce fait-il que test.rtf fait dès le départ 4.0Ko alors qu'il n'y a rien dedans?!"

Cordialement,

Irving B.
 
Tu mets en paramètre un chemin relatif, or ça ne fonctionnera qu'avec un chemin absolu à priori (un chemin par rapport à la racine de ton disque).

Ton fichier rtf est un fichier avec de la présentation. Il inclut des données que tu ne vois pas (je ne saurais te dire précisément lesquels). Si tu veux un fichier vide sans poids, il ne faut pas le créer avec TextEdit, mais plutôt avec la ligne de commande (tu peux y mettre l'extension .txt par exemple).
 
s'il ne met pas de chemin, le fichier est créé dans le répertoire ou il lance l'application ;)

Oui il peut créer le fichier avec un "touch", mais bon les 4 ko, ce ne serait pas tout simplement la taille minimum d'un fichier pour son système de fichiers (qu'il n'a pas précisé)?
 
Merci pour vos précieuses contributions! Il est vrai qu'au début, on a tendance à avoir la tête qui tourne, malgré tout j'essaie de garder la tête froide et espère en sortir la tête haute :D

Cher melaure,

Qu'entends-tu par système de fichier? je veux dire, à quoi fais-tu référence? Je vais tenter une réponse mais n'ironisez pas si elle s'avère être à côté de clous svp :D je dirais "HFSX" pour mon système de fichier...

Je pense néanmoins qu'il y a un gros soucis, car lorsque je remplace dans mon code "r+" par "w+" qui est une variable plus "flexible" car si fichier non-existant, il sera créé et permet de plus d'effacer son contenu, de lire et d'écrire, cela ne crée aucun fichier :(

Je ne parviens à trouver l'erreur!

Amicalement,

Irving B.
 
Le fichier "test.rtf" est pourtant placé dans le dossier de mon projet! J'ai même essayé de le placer dans le fichier "DEBUG" contenant mon exécutable UNIX mais rien y fait!
Attention les chemins relatifs se font par rapport à l'emplacement d'où tu exécutes le programme, et non par rapport à l'endroit où se trouve le programme.
 
Qu'entends-tu par système de fichier?
Oui, c'est bien du HFS+ dont parlait Melaure. Il faut savoir qu'un fichier prend une place mimimum sur le disque, même s'il est vide. Quand tu consultes les infos du Finder, tu doit avoir deux indications: 4 Ko (0 octets).

Je pense néanmoins qu'il y a un gros soucis, car lorsque je remplace dans mon code "r+" par "w+" qui est une variable plus "flexible" car si fichier non-existant, il sera créé et permet de plus d'effacer son contenu, de lire et d'écrire, cela ne crée aucun fichier :(
Probablement que si, mais tu ne regardes pas au bon endroit. Cf la réponse de Grumff.
 
Déjà vire moi ces //

Les commentaires c'est /* blablabla */

Si tu compiles avec un autre unix ou certain cc, le // ne passe pas ;)

Sinon je ne vois pas pourquoi ça ne marcherait pas.

Tu compiles en shell avec CC ?

Quand tu lances tu tapes bien ./test pour être sur de lancer le programme test de ton répertoire courant ?
 
Moi non plus, et c'est tellement moins casse burne à écrire. Si un jour tu tombes sur un compilo qui te jète, le mieux à faire, c'est de changer de compilo. =)

bah déjà cc ... :D
 
Quand tu lances tu tapes bien ./test pour être sur de lancer le programme test de ton répertoire courant ?
Ne jamais appeler son application "test" car après tu cherches pendant des heures pourquoi ça ne marche pas :D:D:D
"which test" répond gentillement "/bin/test" :rateau:
 
Moi non plus, et c'est tellement moins casse burne à écrire. Si un jour tu tombes sur un compilo qui te jète, le mieux à faire, c'est de changer de compilo. =)


humm, sur un clavier AZERTY (donc avec clavier numérique, / et * sont deux touches adjacentes)...

evidemment avec nos ... de clavier apple (surtout pour ceux sans pavé numérique) c'est evidemment plus compliqué...

mais bon à l'école on m'avait formaté pour écrire /* alors...

Apple, mon petit apple, tu pourrais pas nous sortir un clavier pour developpeur????