Programme C ou est mon érreur ?

Résolu
Aurelien.67 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -  
Aurelien.67 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -
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

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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
Aurelien.67 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   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
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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
gnu > fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention  
 
Oui : enlever les int dans les if
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
@gnu,
ça ne sera pas suffisant...
0
gnu > fiddy Messages postés 11069 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
Aurelien.67 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   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
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
Aurelien.67 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   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
gnu > Aurelien.67 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention  
 
Ben pourquoi tu as changé le fclose ?
Et "rx" au lieu de "r" dans le fopen ? C'est quoi ce x ?
0
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
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