Voici le TP que je dois rendre, et je coince sur un petit détail, pourriez vous m'aider ?
Il s'agit d'un programme de communication (un chat) utilisant les sockets. Un fichier log.txt enregistre la communication et mon probleme viens de l'enregistrement de ce fichier.
Voici un extrait du code :
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <strings.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#define PORT 12345
int main()
{ FILE *fp;
int sock, sock2, lg, pid;
struct sockaddr_in local;
struct sockaddr_in distant;
char mess[80];
...
close (sock);
printf ("connecté avec un client \n");
//bcopy("",mess);
fp = fopen("log.txt","a"); OUVERTURE DU FICHIER LOG
if(fp==NULL)
{ printf("Erreur de creation du fichier log \n");exit(1);}
while (strcmp(mess, "fin") !=0)
{
read(sock2,mess,80);
printf("%s\n",mess);
printf("entrer le message : ");
gets(mess);
write(sock2,mess,sizeof(mess)) ;
fwrite(&mess,strlen(mess),1,fp); ICI EST MON PROBLEME
}
printf ("fin dialogue avec client \n");
fclose(fp);
close (sock2);
}
return 0;
}
Le fwrite est récursif, et à chaque fois qu'il y a une écriture dans log.txt, tout le texte est concaténé (il est écrit à la suite) alors qu'il faudrait qu'il retourne à la ligne à chaque enregistrement.
Comment faire ?????
JC