Dev c++... probleme de compilation et aussi d

J'essaye de réussir ce programme mais apparements quelques pistes me bloquent si jamais vous arrivez à les dévoiler, je vous remercie d'avance... ci joint le fichier :
#include <stdio.h>
#include <stdlib.h>
main()
{
FILE *P_TRI; /* déclaration */
char DATA [30], EVENEMENT[30];
int MOIS, JOUR, ANNEE;
int CPTE, NB_ENREG;
/* Première partie : Créer et remplir le fichier */
printf("Entrez le nom du fichier à créer : ");
scanf("%s", DATA);
P_TRI = fopen(DATA, "w"); /* Fichier ouvert en écriture */
printf("Nombre d'enregistrements à créer : ");
scanf("%d", &NB_ENREG);
CPTE = 0;
while (CPTE<NB_ENREG)
{
printf("Entrez l'évènement: ");
scanf("%s", &EVENEMENT);
printf("Entrez le jour : ");
scanf("%d", &JOUR);
printf("Entrez le mois : ");
scanf("%d", &MOIS);
printf("Entrez l'année: ");
scanf("%d", &ANNEE);
fprintf(P_TRI, "%s\n", EVENEMENT);
fprintf(P_TRI,"%d" "%d" "%d", JOUR, MOIS, ANNEE);
CPTE++;
}
fclose(P_TRI);

/* Deuxième partie :
Lire et afficher le contenu du fichier */
//while(feof(P_TRI));
P_TRI = fopen(DATA, "r+"); /* read */
CPTE = 0;
printf("Demarrage tri\n");
do
{
//printf("%s = EVENEMENT);
if(!feof(P_TRI))fscanf(P_TRI,"%s\n %d\n %d\n %d\n", &EVENEMENT,&JOUR,&MOIS,&ANNEE);else break; /* lecture de l'évènement */
printf(" %s\n ",EVENEMENT);
//if(!feof(P_TRI))fscanf(P_TRI,"%d",&JOUR); else break; /* lecture du jour */
printf("%d ",JOUR);
//if(!feof(P_TRI))fscanf(P_TRI,"%s",&MOIS);else break; /* lecture du mois */
printf("%d ",MOIS);
//if(!feof(P_TRI))fscanf(P_TRI,"%d",&ANNEE); else break; /* lecture de l'année */
printf("%d ",ANNEE);

}
while(!feof(P_TRI));
{
printf(" ok1\n");
CPTE++;
}
fclose(P_TRI);
getchar();getchar();

}

Merci encore une fois
Configuration: Windows XP
Internet Explorer 7.0

7 réponses

  1. Je pense que l'erreur est à la ligne
    fprintf(P_TRI,"%d" "%d" "%d", JOUR, MOIS, ANNEE);

    Il y a trop de guillemets, mettre
    fprintf(P_TRI,"%d %d %d", JOUR, MOIS, ANNEE);
    1. Contributeur
      En effet, il y a une erreur à l'endroit indiqué par Richard. Il y a également une autre erreur : scanf("%s", &EVENEMENT); il n'a pas le "&".
      scanf("%s", EVENEMENT);. EVENEMENT est un pointeur.
      1. Merci ca marche ... au fait y avait aussi un probleme au niveau de : printf(" \n %s\n ",EVENEMENT);

        j avais oublié le \n et ca mal tourné... mais bon , le programme est ok ...Merci les garçons
    2. Si vous avez une idée de comment faire pour afficher mes evenements dans un ordre décroissant ou croissant... j ai réalisé un programme qui affiche les résultats sans les ordonner...
      1. Modérateur
        Puisque tu fais du C++ je t'invite a regarder comment s'utilisent les std::map et les std::string. Regarde en particulier l'exemple du premier lien :
        https://community.hpe.com/t5/custom/page/page-id/HPPSocialUserSignonPage?redirectreason=permissiondenied&referer=https%3A%2F%2Fcommunity.hpe.com%2Ft5%2FServers-Systems-The-Right%2FSGI-com-Tech-Archive-Resources-now-retired%2Fba-p%2F6992583
        https://community.hpe.com/t5/custom/page/page-id/HPPSocialUserSignonPage?redirectreason=permissiondenied&referer=https%3A%2F%2Fcommunity.hpe.com%2Ft5%2FServers-Systems-The-Right%2FSGI-com-Tech-Archive-Resources-now-retired%2Fba-p%2F6992583

        Si tu es motivé(e) il faudrait aussi changer tout ce qui est (f)scanf, (f)printf etc... avec des flux (std::cout, std::ifstream, std::ofstream, opérateurs << et >>). Exemple :
        #include <iostream>
        
        int main(){
          int x;
          std::cout << "valeur de x ?" << std::endl;
          std::cin >> x;
          std::cout << "valeur de x : " << x << std::endl;
          return 0;
        }

        Bonne lecture
        1. Mais non, ce n'est pas du C++ ! Il n'y a pas une seule ligne de code C++ ! C'est du C avec une extension .cpp...
          1. Modérateur
            Merci TDE, mais j'avais remarqué. C'est juste que pour ce que immma veut faire c'est 40 fois plus simple en C++ qu'en C et c'est pour ça que je lui conseille d'y jeter un oeil. Evidemment on peut s'en sortir avec un qsort en C mais objectivement c'est vraiment se compliquer la vie pour rien et ce sera de toute façon moins efficace et pratique qu'une map...
            1. Ca c'est une réponse logique que la pluparts sait pas répondre... chapeau mamiemando... Au fait, c'est finit avec ce programme et ca mal tourné puisque j ai pas pu réaliser le tri sans faire ni tableau ni structure , il reste certes une possibilité mais les structures et les tableaux facilitent la tache davantage...
              Merci mamiemando ;) ca me plait ton raisonnement quoi ;)
          2. Modérateur
            Ben de rien :-) Est ce qu'on peut considérer le problème comme résolu ou tu as d'autres questions ?