Programme C ou est mon érreur ?

Résolu
Aurelien.67 Messages postés 19 Statut Membre -  
Aurelien.67 Messages postés 19 Statut Membre -
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. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    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;
    2
    1. Aurelien.67 Messages postés 19 Statut Membre 7
       
      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
      0
    2. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      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().
      0
    3. gnu > fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Oui : enlever les int dans les if
      0
    4. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      @gnu,
      ça ne sera pas suffisant...
      0
    5. gnu > fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Effectivement, on dirait qu'il déclare une fonction déjà existante au lieu de l'utiliser
      0
  2. Aurelien.67 Messages postés 19 Statut Membre 7
     
    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)
    0
    1. gnu
       
      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");
      0
    2. Aurelien.67 Messages postés 19 Statut Membre 7 > gnu
       
      Merci, 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);
      }
      0
    3. gnu > Aurelien.67 Messages postés 19 Statut Membre
       
      Ben pourquoi tu as changé le fclose ?
      Et "rx" au lieu de "r" dans le fopen ? C'est quoi ce x ?
      0
    4. gnu
       
      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");
      }
      }
      0
    5. Aurélien.67 > gnu
       
      X 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
      0