Probleme de fichiers sous c
gersen
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
-
vignemail1 Messages postés 1246 Date d'inscription Statut Contributeur Dernière intervention -
vignemail1 Messages postés 1246 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
j'ai un pt'it probleme que j'arrive pas a resoudre si vous pouvez m'aider
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
/*fonction creer station*/
typedef struct station station;
struct station { char nom[20];
int num;
};
/*le type arc*/
typedef struct arc arc;
struct arc
{ station stat_depart;
station stat_arriv;
int indic;
};
/*fonction de creation de station*/
station creer_station(char *nom,int num)
{station nouv;
{
nouv.num=num;
strcpy(nouv.nom,nom);
}
}
/*fonctions de comparaison entre 2 stations*/
int meme_station(station a,station b)
{
if (strcmp(a.nom,b.nom)==0&&a.num==b.num) return(1);
else return(0);
}
/*fonctions de creation d'un arc*/
arc creer_ar(station a,station b,int indicateur)
{arc nouv;
{nouv.stat_depart=a;
nouv.stat_arriv=b;
nouv.indic=indicateur;
}
return(nouv);
}
/* appartenance*/
int appartient(station a,arc c)
{
if ((strcmp(c.stat_depart.nom,a.nom)==0)&&(c.stat_depart.num==a.num)) return(1);
else if ((strcmp(c.stat_arriv.nom,a.nom)==0)&&(c.stat_arriv.num==a.num)) return(1);
else return(0);
}
/*comparaisons de 2 arc*/
int memearc(arc c1,arc c2)
{
if((appartient(c1.stat_depart,c2)==1)&&(appartient(c1.stat_arriv,c2)==1)) return(1);
else return(0);
}
/*fonctions se suivent*/
int sesuivent(arc c1,arc c2)
{
if ((memearc(c1,c2)==0)&&(strcmp(c1.stat_arriv.nom,c2.stat_depart.nom)!=0)) return(1);
else return(0);
}
/* PARTIE 3*/
FILE *creerReseau(int nbr)
{int i=1;arc a;FILE* fich;
fich=fopen("tp2.dat","w");
if(fich==NULL) {printf("erreur d'ouverture");exit(-1);}
while(i<=nbr)
{
printf("donner le nom de votre station de depart de l'arc Numero %d\n",i);
scanf("%s",&a.stat_depart.nom);
printf("donner le nom de votre station d'arrive de l'arc Numero %d\n",i);
scanf("%s",&a.stat_arriv.nom);
fwrite(&a,sizeof(arc),1,fich);
i++;
}
fclose(fich);
return(fich);
}
/*rechercher un arc*/
int rechercheArc(station depart,station arrive,FILE *p)
{arc a;
p=fopen("tp2.dat","r");
if(p==NULL) {printf("erreur d'ouverture");exit(-1);}
while(!feof(p))
{fread(&a,sizeof(arc),1,p);
if((appartient(depart,a)==1)&&(appartient(arrive,a)==1)) return(1);
}
return(0);
}
/*copier 2 arc*/
arc copier(arc a)
{arc b;
strcpy(b.stat_depart.nom,a.stat_depart.nom);
b.stat_depart.num=a.stat_depart.num;
b.stat_arriv.num=a.stat_arriv.num;
strcpy(b.stat_arriv.nom,b.stat_arriv.nom);
}
/*suppression d'un ARC*/
/* rechercher l'existance d'un chemin*/
arc *recherche(station a ,station b,FILE *p)
{arc c,save,tab[50];int trouv=0,fin,i=0;
p=fopen("tp2.dat","r");
while((trouv==0)&&(!feof(p)))
{fread(&c,sizeof(arc),1,p);
if((appartient(a,c)==1)&&(strcmp(a.nom,c.stat_depart.nom)==0)) {trouv=1;
save=c;
trouv=1;
rewind(p);
}
}
if(trouv==0){return(0);}
while((!feof(p))&&(appartient(b,c)==0))
{fread(&c,sizeof(arc),1,p);
if((memearc(c,save)==0)&&(sesuivent(save,c)==1)) {save=c;
rewind(p);
tab[i]=save;
i++;
}
}
fclose(p);
return(tab);
}
main()
{int nbr,i;FILE *fichier;arc*s,d;station depart,arrive;
printf("DONNEZ LE NOMBRE D'ARC DU RESEAU \n");
scanf("%d",&nbr);
fichier=creerReseau(nbr);
printf("QUELLE SONT LES STATIONS QUE VOUS VOULEZ CHERCHER LE CHEMINS ENTRE ELLES\n");
printf("STATION DE DEPART:");
scanf("%s",&depart.nom);
printf("STATION D'ARRIVE:");
scanf("%s",&arrive.nom);
fclose(fichier);
s=recherche(depart,arrive,fichier);
i=0;
while(i<nbr)
{printf("%s %s \n",s[i].stat_depart.nom,s[i].stat_arriv.nom);
i++;
}
getch();
}
j'ai un pt'it probleme que j'arrive pas a resoudre si vous pouvez m'aider
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
/*fonction creer station*/
typedef struct station station;
struct station { char nom[20];
int num;
};
/*le type arc*/
typedef struct arc arc;
struct arc
{ station stat_depart;
station stat_arriv;
int indic;
};
/*fonction de creation de station*/
station creer_station(char *nom,int num)
{station nouv;
{
nouv.num=num;
strcpy(nouv.nom,nom);
}
}
/*fonctions de comparaison entre 2 stations*/
int meme_station(station a,station b)
{
if (strcmp(a.nom,b.nom)==0&&a.num==b.num) return(1);
else return(0);
}
/*fonctions de creation d'un arc*/
arc creer_ar(station a,station b,int indicateur)
{arc nouv;
{nouv.stat_depart=a;
nouv.stat_arriv=b;
nouv.indic=indicateur;
}
return(nouv);
}
/* appartenance*/
int appartient(station a,arc c)
{
if ((strcmp(c.stat_depart.nom,a.nom)==0)&&(c.stat_depart.num==a.num)) return(1);
else if ((strcmp(c.stat_arriv.nom,a.nom)==0)&&(c.stat_arriv.num==a.num)) return(1);
else return(0);
}
/*comparaisons de 2 arc*/
int memearc(arc c1,arc c2)
{
if((appartient(c1.stat_depart,c2)==1)&&(appartient(c1.stat_arriv,c2)==1)) return(1);
else return(0);
}
/*fonctions se suivent*/
int sesuivent(arc c1,arc c2)
{
if ((memearc(c1,c2)==0)&&(strcmp(c1.stat_arriv.nom,c2.stat_depart.nom)!=0)) return(1);
else return(0);
}
/* PARTIE 3*/
FILE *creerReseau(int nbr)
{int i=1;arc a;FILE* fich;
fich=fopen("tp2.dat","w");
if(fich==NULL) {printf("erreur d'ouverture");exit(-1);}
while(i<=nbr)
{
printf("donner le nom de votre station de depart de l'arc Numero %d\n",i);
scanf("%s",&a.stat_depart.nom);
printf("donner le nom de votre station d'arrive de l'arc Numero %d\n",i);
scanf("%s",&a.stat_arriv.nom);
fwrite(&a,sizeof(arc),1,fich);
i++;
}
fclose(fich);
return(fich);
}
/*rechercher un arc*/
int rechercheArc(station depart,station arrive,FILE *p)
{arc a;
p=fopen("tp2.dat","r");
if(p==NULL) {printf("erreur d'ouverture");exit(-1);}
while(!feof(p))
{fread(&a,sizeof(arc),1,p);
if((appartient(depart,a)==1)&&(appartient(arrive,a)==1)) return(1);
}
return(0);
}
/*copier 2 arc*/
arc copier(arc a)
{arc b;
strcpy(b.stat_depart.nom,a.stat_depart.nom);
b.stat_depart.num=a.stat_depart.num;
b.stat_arriv.num=a.stat_arriv.num;
strcpy(b.stat_arriv.nom,b.stat_arriv.nom);
}
/*suppression d'un ARC*/
/* rechercher l'existance d'un chemin*/
arc *recherche(station a ,station b,FILE *p)
{arc c,save,tab[50];int trouv=0,fin,i=0;
p=fopen("tp2.dat","r");
while((trouv==0)&&(!feof(p)))
{fread(&c,sizeof(arc),1,p);
if((appartient(a,c)==1)&&(strcmp(a.nom,c.stat_depart.nom)==0)) {trouv=1;
save=c;
trouv=1;
rewind(p);
}
}
if(trouv==0){return(0);}
while((!feof(p))&&(appartient(b,c)==0))
{fread(&c,sizeof(arc),1,p);
if((memearc(c,save)==0)&&(sesuivent(save,c)==1)) {save=c;
rewind(p);
tab[i]=save;
i++;
}
}
fclose(p);
return(tab);
}
main()
{int nbr,i;FILE *fichier;arc*s,d;station depart,arrive;
printf("DONNEZ LE NOMBRE D'ARC DU RESEAU \n");
scanf("%d",&nbr);
fichier=creerReseau(nbr);
printf("QUELLE SONT LES STATIONS QUE VOUS VOULEZ CHERCHER LE CHEMINS ENTRE ELLES\n");
printf("STATION DE DEPART:");
scanf("%s",&depart.nom);
printf("STATION D'ARRIVE:");
scanf("%s",&arrive.nom);
fclose(fichier);
s=recherche(depart,arrive,fichier);
i=0;
while(i<nbr)
{printf("%s %s \n",s[i].stat_depart.nom,s[i].stat_arriv.nom);
i++;
}
getch();
}
A voir également:
- Probleme de fichiers sous c
- Explorateur de fichiers - Guide
- Renommer des fichiers en masse - Guide
- Fichiers epub - Guide
- Gestionnaire de fichiers - Télécharger - Gestion de fichiers
- Wetransfer gratuit fichiers lourd - Guide