Programme C ou est mon érreur ?

Résolu/Fermé
Aurelien.67 Messages postés 18 Date d'inscription jeudi 23 octobre 2014 Statut Membre Dernière intervention 18 décembre 2014 - Modifié par Whismeril le 17/12/2014 à 19:11
Aurelien.67 Messages postés 18 Date d'inscription jeudi 23 octobre 2014 Statut Membre Dernière intervention 18 décembre 2014 - 18 déc. 2014 à 16:43
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
15 déc. 2014 à 11:59
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 jeudi 23 octobre 2014 Statut Membre Dernière intervention 18 décembre 2014 7
15 déc. 2014 à 12:04
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
15 déc. 2014 à 15:43
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022
15 déc. 2014 à 15:52
Oui : enlever les int dans les if
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
15 déc. 2014 à 16:07
@gnu,
ça ne sera pas suffisant...
0
gnu > fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022
15 déc. 2014 à 16:22
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 jeudi 23 octobre 2014 Statut Membre Dernière intervention 18 décembre 2014 7
Modifié par Aurelien.67 le 16/12/2014 à 09:48
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
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 jeudi 23 octobre 2014 Statut Membre Dernière intervention 18 décembre 2014 7 > gnu
16 déc. 2014 à 10:05
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 jeudi 23 octobre 2014 Statut Membre Dernière intervention 18 décembre 2014
16 déc. 2014 à 10:25
Ben pourquoi tu as changé le fclose ?
Et "rx" au lieu de "r" dans le fopen ? C'est quoi ce x ?
0
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
16 déc. 2014 à 11:21
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