Rechercher : dans
Par :

[C] Problème lecture de fichier

djguigui34, le 6 nov 2009 à 19:12:31 
 Signaler ce message aux modérateurs

Bonjour,

J'essaye de faire un logiciel en mode console qui me permettrais de discuter entre des ordinateur en réseau possédant un dossier partagé.

Voilà le code pour l'instant :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


void viderBuffer();
int lire(char *chaine, int longueur);
int verif(char *chaine);

int main(int argc, char *argv[])
{
char prenom[30];
char texteAEntrer[200];
char chaine[200] = "";
char *suiteChaine;

//ouverture du fichier com.gv qui sera dans le dossier partagé
FILE* fichier = NULL;
fichier = fopen("com.gv", "w+");

printf("Quel est votre prenom ? ");
lire(prenom, 30);

if (fichier != NULL)
{
printf("Le fichier est bien charge !\n");

do
{
printf("%s", prenom);
printf(" : ");
lire(texteAEntrer, 200);
fputs(prenom, fichier);
fputs(" : ", fichier);
fputs(texteAEntrer, fichier);
fputs("\n", fichier);

} while (verif(texteAEntrer));

rewind(fichier);

while (fgets(chaine, 200, fichier) != NULL) // On lit le fichier tant qu'on ne reçoit pas d'erreur
{
suiteChaine = strstr(chaine, prenom);
if (suiteChaine = NULL)
{
printf("%s", suiteChaine); // On affiche la chaîne qu'on vient de lire
}
}

getchar();


fclose(fichier);
}


return 0;
}

void viderBuffer()
{
int c = 0;
while (c != '\n' && c != EOF)
{
c = getchar();
}
}

int lire(char *chaine, int longueur)
{
char *positionEntree = NULL;

if (fgets(chaine, longueur, stdin) != NULL)
{
positionEntree = strchr(chaine, '\n');
if (positionEntree != NULL)
{
*positionEntree = '\0';
}
else
{
viderBuffer();
}
return 1;
}
else
{
viderBuffer();
return 0;
}
}

int verif(char *chaine)
{
char chaine1[200] = "exit";
if(strcmp(chaine1, chaine) == 0)
{
return 0;
}
else
{
return 1;
}
}

Pour l'instant c'est un début mais un problème se pose : il faudrait que le programme fasse écrire -> lire -> écrire -> lire... jusqu'à ce que l'on écrive "exit". Mais il ne faut pas qu'il lise le texte que j'ai écrit ! Dès que le fichier contient un nouvelle ligne commençant par un prénom différent, il l'affiche. C'est ce point là que je ne trouve pas.

Merci d'avance,

Guilhem

Configuration: Windows XP
Firefox 3.5.5

Meilleures réponses pour « [C] Problème lecture de fichier » dans :
Comment lire un fichier ligne par ligne VoirComment lire un fichier ligne par ligne Préambule Boucle while Syntaxe Exemple Astuces Bonus Boucle for Syntaxe Préambule Une des erreurs les plus communes dans l'apprentissage des scripts "bash" sous GNU/LInux pour lire un fichier...
[Gravure] Graver ou lire un fichier .NRG VoirUn fichier .NRG est une image de CD, c'est-à-dire une copie binaire d'un CD ou d'un DVD sous forme d'un fichier Les fichiers .NRG sont utilisables par des programmes de gravure ou bien des lecteurs de disques virtuels (tels que Daemon...
[Gravure] Graver ou lire un fichier .BIN / .CUE VoirLes fichiers .bin et .cue sont respectivement : .BIN : une image de CD, c'est-à-dire une copie binaire d'un CD ou d'un DVD sous forme d'un fichier .CUE : informations sur les pistes du disque. Les fichiers .BIN / .CUE sont utilisables par...
Fichier M3U VoirFormat M3U Un fichier M3U est une playlist audio, c'est-à-dire une liste de lecture pointant vers des fichiers audio. Comment lire un fichier M3U ? Une telle liste peut être lue avec n'importe quel logiciel de lecture audio capable de lire des...
Fichier ISO (Image ISO) VoirFormat ISO Un fichier possédant l'extension .ISO est une image ISO, c'est-à-dire une image d'un disque (CD, DVD ou disque dur) sous forme de fichier, créer avec un logiciel de gravure. Comment lire un fichier ISO ? En l'absence de graveur, il...
Fichier EPS VoirFormat EPS Un fichier EPS (Encapsulated PostScript) est un fichier PostScript encapsulé, c'est-à-dire un fichier PostScript prévu pour pouvoir être incorporé dans un autre fichier. Comment lire un fichier EPS ? Pour ouvrir un tel fichier, il...