Programme C ou est mon érreur ?

Résolu
Bonjour, quelqu'un pourrait trouver mon erreur svp ? le fichier que je voudrais ouvrir est en .midi
mon programme :

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

void main(void){
FILE *ptr_fichier;
char texte[50];
ptr_fichier = ("D:\\joyeux-anniversaire");

    if(int open(char *ptr_fichier ,int O_TEXT ,int S_IREAD)== -1){
        printf("erreur ouverture fichier\n");
    }
    else
        {printf("le fichier à bien été ouvert\n");
    }

    if(int close(int *ptr_fichier)!=NULL){
        printf("le fichier à bien été fermé\n");}
    else{
        printf("le fichier ne c'est pas bien fermé\n");
    }

}


les erreurs sont:
line 11 error: expected expression before 'int'
line 18 error: expected expression before 'int'

EDIT: Ajout de la coloration syntaxique.

2 réponses

  1. Contributeur
    Bonjour,

    void main(void)
    Le bon prototype est : int main(void)
    De fait, il faut penser à mettre "return 0;" en fin du main() pour signaler qu'il s'est correctement déroulé.

    ptr_fichier = ("D:\\joyeux-anniversaire");
    Ce n'est pas comme ça que l'on ouvre un fichier. Il faut utiliser la fonction fopen(). Exemple ptr_fichier=fopen("D:\\joyeux-anniversaire\\nomFichier.midi")
    Si ptr_fichier vaut NULL c'est qu'il y a eu une erreur à l'ouverture.
    Exemple : if (ptr_fichier == NULL)

    Pour le fermer : fclose(ptr_fichier), ptr_fichier=NULL;
    1. je ne veux pas utiliser la fonction fopen mais open qui est plus maniable qui offre plus de possibilité.
      http://gd.tuwien.ac.at/languages/c/programming-bbrown/c_075.htm
    2. Contributeur
      Mais qui n'est pas standard... Sauf si tu as installé des trucs spécifiques, ça ne marchera pas sur windows. Après c'est toi qui vois...
      Bref, dans ce cas :
      FILE *ptr_fichier;
      Ca ne sert à rien.
      Plutôt : char *ptr_fichier = "D:\\joyeux-anniversaire.midi";

      if(int open(char *ptr_fichier ,int O_TEXT ,int S_IREAD)== -1){
      Ce n'est pas comme ça qu'on fait.
      Il faut plutôt mettre : if (open(ptr_fichier, ..., ...) ==-1) {
      A toi de voir comment valoriser O_TEXT et S_IREAD selon le lien que tu as montreé.
      De même pour close().
    3. Contributeur
      @gnu,
      ça ne sera pas suffisant...
    4. @fiddyEffectivement, on dirait qu'il déclare une fonction déjà existante au lieu de l'utiliser
  2. Merci pour vos réponses j'ai tester avec le fopen mais le programme crash au lancement il affiche le fichier à bien été ouvert.
    Puis:
    "miditest.exe a rencontré un problème et doit fermer. Nous vous prions de nous excuser pour le désagrément encouru."
    le programme :

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

    int main(void){
    FILE *ptr_fichier;
    ptr_fichier = ("D:\\joyeux-anniversaire.midi");

    if(ptr_fichier==NULL)
    printf("erreur ouverture fichier\n");
    else
    printf("le fichier à bien été ouvert\n");

    if(fclose(ptr_fichier)!=0)
    printf("le fichier à bien été fermé\n");
    else
    printf("le fichier ne c'est pas bien fermé\n");
    return(0);
    }

    Le but final est de lire la partition en point midi et à l'aide d'une carte easyPIC, contrôler, et d'un programme bien sur, contrôler des l'électroaimant qui devront boucher les troues d'une vrai flûte (c'est un projet de PPE)
    1. Salut,
      je vois pas le fopen dans ton code

      ptr_fichier = ("D:\\joyeux-anniversaire.midi");

      au lieu de ptr_fichier = fopen("D:\\joyeux-anniversaire.midi","r");
    2. @gnuMerci, mais toujours le même problème
      #include <stdio.h>
      #include <stdlib.h>
      #include <errno.h>

      int main(void){
      FILE *ptr_fichier;
      ptr_fichier = fopen("D:\\joyeux-anniversaire.midi","rx");

      if(ptr_fichier==NULL)
      printf("erreur ouverture fichier\n");
      else
      printf("le fichier à bien été ouvert\n");

      ptr_fichier = fclose("D:\\joyeux-anniversaire.midi");
      if(ptr_fichier==NULL)
      printf("le fichier ne c'est pas bien fermé\n");
      else
      printf("le fichier à bien été fermé\n");
      return(0);
      }
    3. @Aurelien.67Ben pourquoi tu as changé le fclose ?
      Et "rx" au lieu de "r" dans le fopen ? C'est quoi ce x ?
    4. Je ferais ça
      #include <stdio.h>
      #include <stdlib.h>
      #include <errno.h>

      int main(void){
      FILE *ptr_fichier;
      ptr_fichier = fopen("D:\\joyeux-anniversaire.mid","r");

      if(ptr_fichier==NULL)
      printf("erreur ouverture fichier\n");
      else
      {printf("le fichier à bien été ouvert\n");

      if(fclose(ptr_fichier))
      printf("le fichier ne c'est pas bien fermé\n");
      else
      printf("le fichier à bien été fermé\n");
      }
      }
    5. @gnuX vérifie si le fichier est existant et r l'ouvre en mode lecture on peut pas le modifier
      Je resterais t'as solution ce soir merci