begin process at 2012 05 29 15:25:13
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

PB avec la gestion de fichier dans une de mes fonctions!!!!


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

PB avec la gestion de fichier dans une de mes fonctions!!!!

mardi 6 mai 2003 à 18:18:07 | PB avec la gestion de fichier dans une de mes fonctions!!!!

kobee12

J'ai cree deux fonctions qui me permettent de charger et d'enregistrer dans un fichier selon l'ecriture dans le fichier de la maniere suivante :

jour mois ¤(null)¤(null)¤(null)¤null()¤null()¤null()...
...

J'ai cree une fonction qui doit me servir dans un programme mais que j'ai simplifier qui s'appelle 'saisie()'
Cette fonction est cense charge le jour et le mois (qui sont des int) et les 12 enregistrements separes par des '¤', et mettre ces 12 enregistrements dans un tableau *Info[12].

J'ai cree un programme pour tester cela.
vous pouvez trouvez en dessous un copier/coller de mon programme test.

Mon programme propose deux choix :
-le premier utilise la fonction saisie() pour charger un fichier, modifier un enregistrement(ici le 1er, c'est a dire Info[0]) et enregistrer le nouveau contenu dans le fichier.
-le second utilise directement les fonctions charger et enregistrer en modifiant le premier enregistrement en faisant une saisie avec un gets(Info[0]);

Probleme:
Seulement voila,
-pour le premier choix il n'arrive a rien faire.
-Pour le second il charge pas ce qu'il faut. Par contre, il enregistre bien ce qu'on a saisie avec gets(Info[0]);

j'ai nomme le fichier "essai.txt".

vous pouvez trouvez en dessous un copier/coller de mon programme test. Il fonctionne sous dev-c++ et Turbo C++. Il faut juste changer conio.h en conio.c pour dev-C++.

J'espere que j'ai ete assez clair et que quelqu'un pourra m'aider.
Merci d'avance.

voici un exemple de ce que doit contenir le fichier essai.txt:
20 3Ïenregistrement nø1Ï(null)Ï(null)Ï(null)Ï(null)Ï(null)Ï(null)Ï(null)Ï(null)Ï(null)Ï(null)Ï(null)
2 1Ïon est le 2 janvierÏ(null)Ï(null)Ï(null)Ï(null)Ï(null)Ï(null)Ï(null)Ï(null)Ï(null)Ï(null)Ï(null)Ï(null)
1 4ÏcoucouÏ(null)Ï(null)Ï(null)Ï(null)Ï(null)Ï(null)Ï(null)Ï(null)Ï(null)Ï(null)Ï(null)

VOICI LE CODE :

/************************************************ */
/* */
/* Il faut laisser un enregistrement dans le fichier source*/
/* ex : 1 1 Ï(null)Ï(null)Ï(null)...*12 */
/* */
/*************************************************/
#include <stdio.h>
#include <conio.c> //conio.c pour dev-c++
#include <string.h>

#define ENTER 13
#define TAB 9
#define ESC 27 // TOUCHES DU CLAVIER
#define UP 72
#define LEFT 75
#define RIGHT 77
#define DOWN 80
#define RETOUR 8

int Copier_Fichier(char *temporaire, char *destination);
void Charger_Info(int num_jour, int mois, char* Info[12]);
void Enregistrer_Info(int num_jour, int mois, char* Info[12]);

void saisie(int num_jour, int mois)
{
char *saisie="";
int x=64,y=72,i;
int echap=0,cpt=0,num_car=0,nb_car_ligne=0,erreur=0;
char car;
char *Info[12]={0};
int n_jour,n_mois;
char msg[200];

*Info=(char*)malloc(200);

printf("%d,%d\n\n\n",num_jour,mois);
Charger_Info(num_jour,mois,Info);
printf("charge dans la fonction saisie : Info[0]=%s\n",Info[0]);
num_car=strlen(Info[0]);
printf("num_car=%d\n\n",num_car);
printf("Info[0]=%s\n",Info[0]);
num_car=strlen(Info[0]);
printf("num_car=%d\n\n",num_car);

while(cpt!=num_car)
{
saisie[0]=Info[0][cpt];
printf("Info[0][cpt]=%c",Info[0][cpt]);
printf("saisie[0]=%d",saisie[0]);

x+=8;
cpt++;

if(cpt%35==0 || Info[0][cpt]==13)
{
x=64;
y+=8;
cpt++;
}
}

do
{
if(erreur==1)
{
erreur=0;

num_car=strlen(Info[0]);
cpt=0;
x=64;
y=72;
while(cpt!=num_car)
{
saisie[0]=Info[0][cpt];
printf("%c",saisie[0]);

x+=8;
cpt++;

if(cpt%35==0 || Info[0][cpt]==13)
{
x=64;
y+=8;
cpt++;
}
}
}//fin if(erreur)

do
{
saisie[0]=getch();

if(saisie[0]>31 && saisie[0]<127)
{
printf("%c",saisie[0]);
x+=8;
Info[0][num_car]=saisie[0];
num_car++;
}
else
{
switch(saisie[0])
{
case ENTER :
x=64;
y+=8;
Info[0][num_car]=13;
num_car++;
break;
case ESC :
echap=1;
break;
case TAB :x+=32;
if(x>336)
{
x=64;
y+=8;
}
for(i=0;i<4;i++)
{
Info[0][num_car]=32;
num_car++;
}
break;
case RETOUR:
if(x==64 && y==72)
break;
else
{
num_car-=1;
Info[0][num_car]=0;
if(x>64)
x-=8;
else
{
if(y>80)
{
cpt=0;
nb_car_ligne=num_car-1;
do
{
car = Info[0][nb_car_ligne--];
cpt++;
}while(car!=13);
cpt-=1;
x+=(cpt*8);
y-=8;
}
else
{
x+=(num_car*8);
y-=8;
}
}
}
printf("");
break;
default :
do
{
printf("ERREUR!!");
if(kbhit())
{
if(getch()==13)
{
erreur=1;
break;
}
}
}while(1);
break;
}//fin switch()
}//fin else
}while(erreur!=1 && echap==0);

}while(echap==0);

Enregistrer_Info(num_jour,mois,Info);

for(i=0;i<12;i++)
free(Info[i]);

saisie=Info[0];
printf("saisie:%s",saisie);
}


int main(void)
{
int num_jour=20,mois=3;
int i,choix;
char *Info[12]={0};

while(1)
{
clrscr();
printf("faites votre choix(1,2ou3) : \n");
printf("1. en utilisant la fonction saisie\n");
printf("2. en utilisant directement les fonctions\n");
printf("charger et enregistrer dans le fichier\n");
printf("3. quitter");
printf("\n\n");

scanf("%d",&choix);
switch(choix)
{
case 1 :saisie(num_jour,mois);break;
case 2 :
Charger_Info(num_jour,mois,Info);
printf("%s\n",Info[0]);
Info[0]=(char*)malloc(200);
printf("saisir une chaine\n");
fflush(stdin);
gets(Info[0]);

Enregistrer_Info(num_jour,mois,Info);
break;
case 3 :return 0;
default:printf("mauvaise touche!!\n");getch();break;
}
}
}

int Copier_Fichier(char *temporaire, char *destination)
{
FILE *fds, *fdd;
char chaine[200];
fds = fopen(temporaire, "r");
fdd = fopen(destination, "w");
if(!(fds && fdd))
{
printf("erreur d'ouverture\n");
exit(0);
}
rewind(fds);
rewind(fdd);
do
{
fgets(chaine,200,fds);
fprintf(fdd,"%s",chaine);
}while(!feof(fds));

fclose(fds);
fclose(fdd);
return 0;

}

void Charger_Info(int num_jour, int mois, char* Info[12])
{
FILE *fichier,*temp;
int n_jour,n_mois,i,trouve=0,cmp=0;
char msg[200];
char buf[200];
char car;

fichier = fopen("essai.txt", "r");

rewind(fichier);

/* recuperation des donnees pour une date donnee*/
do
{
fgets(buf,200,fichier);
sscanf(buf,"%d %d %[^\n]%s",&n_jour,&n_mois,msg);
if(n_jour==num_jour && n_mois==mois)
{
i=0;
Info[i]=strtok(msg,"Ï");
for(i=1;i<12;i++)
{
Info[i]=strtok(NULL,"Ï");
}
}
}while(!feof(fichier));

for(i=0;i<12;i++)
printf("info[%d]=%s\n",i,Info[i]);

fclose(fichier);
/* fin recuperation des donnees*/

// return (*Info);
}

void Enregistrer_Info(int num_jour, int mois, char* Info[12])
{
FILE *fichier,*temp;
int n_jour,n_mois,i,trouve=0,cmp=0;
char msg[200];
char buf[200];
char car;
char *temporaire;

/*ouverture des fichiers pour faire une mise a jour*/

fichier = fopen("essai.txt", "r");
temporaire = tempnam("\\tmp","wiw");

temp = fopen(temporaire, "w");

rewind(fichier);
rewind(temp);
do
{

fgets(buf,200,fichier);
sscanf(buf,"%d %d %[^\n]%s",&n_jour,&n_mois,msg);
if(n_jour==num_jour && n_mois==mois)
{
fprintf(temp,"%d %d",num_jour,mois);
for(i=0;i<12;i++)
{
Info[i]=strtok(Info[i],"Ï");
fprintf(temp,"Ï%s",Info[i]);
}
trouve=1;
cmp=1;
}
else
{
if(cmp==1)
{
fprintf(temp,"\n");
fprintf(temp,"%s",buf);
cmp=0;
}
else
{
fprintf(temp,"%s",buf);
}
}
}while(!feof(fichier));

if(trouve==0)
{
fprintf(temp,"\n%d %d",num_jour,mois);
for(i=0;i<12;i++)
fprintf(temp,"Ï%s",Info[i]);
}

fclose(fichier);
fclose(temp);
Copier_Fichier(temporaire,"essai.txt");

remove(temporaire);
free(temporaire);

}


Cette discussion est classée dans : fichier, jour, num, mois, info


Répondre à ce message

Sujets en rapport avec ce message

création de fichier [ par freeze ] Salut à tous,je voudrais créer un fichier qui reprendrai la date du jourPar exemple 0110022.zip pour un fichier zip du 01/10/2002En fait je voudrais é PB de gestion de fichier!!!! [ par kobee12 ] J'ai un probleme avec la boucle qui se trouve en dessous ( do ... while(!feof(fichier)) ).quand on arrive a la fin du fichier il fait une erreur. il n transformer un jour du mois en DWORD [ par myocean ] Dans le cas de la structure AT_INFOla variable DaysOfMonth est au format DWORD et elle recoit comme paramêtre des bit où le bit 0 est le 1er du mois Pb de copie de fichier/taille de structure [ par wannie ] Salut tt le monde. Quelqu'un pourrai tester mon prog est me dire si ça fonctionne. Moi je comprend pas j'ai une copie d'un caractère dans chaque ligne Probleme Lecture SID sur un repertoire partagé [ par kawito ] Bonjour,ma fonction scan un repertoire et ecrit dans un fichier de log,toutes les informations des repertoires et des fichiers contenu dans celui ci.E Info Dbase et C [ par coopertel ] Bonjour,Je me lance dans la prog C (pas ++).J'ai comme compilateur Miracle C et Borland 5 ligne de commande.Je développe uniquement de programme sans recherche d'info dans une ligne d'un fichier [ par GazGaz ] lu all je voudrait savoir si je pouvai faire un recherche dans un fichier, d'un mot ou groupe de mots spécifiques ? genre j'ai une ligne et dans celle je cherche a traduire un code de VB vers VC++ [ par JoePatent ] Je cherche a traduire un code VB en VC++ . . . Voici le code :- - - - - -Function le_jour(ByVal annee As Integer, ByVal mois As Integer, ByVal jour As Mise à jour d'un fichier texte [ par Neo020585 ] Bonjour à tous.J'ai un fichier "liste.txt" qui contient une liste de chemin d'accès à des fichiers avec leur date de dernière modification :ex. : ...C chercher des info dans un fichier hexa [ par grezouille ] bonjours j'ai un petit prob.J'explique j'ai un fichier que j'ouvre avec un editeur haxdecimal. Et dans se fichier je voudrais recuperais des données


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 6,240 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales