begin process at 2012 02 11 14:27:25
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

besoin d'aide : TP école d'ingénieur


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

besoin d'aide : TP école d'ingénieur

vendredi 11 février 2005 à 01:13:27 | besoin d'aide : TP école d'ingénieur

arbomont

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

vendredi 11 février 2005 à 06:37:59 | Re : besoin d'aide : TP école d'ingénieur

magma


Ajouter un saut de ligne a mess avant ecriture dans le fichier:

mess[strlen(mess)] = '\n';



vendredi 11 février 2005 à 06:40:27 | Re : besoin d'aide : TP école d'ingénieur

AlexMAN

Membre Club
Une solution pourrait etre de toujours commencer ton buffer mess par un '\n' pour ne jamais oublier le retour a la ligne : char mess[80] = "\n";
Et ensuite tu n'oublies jamais de l'utiliser comme ceci : fwrite(mess + 1, strlen(mess + 1), 1, fp);, Ne pas oublier le + 1.
Ou alors, tu peux le mettre a la fin de ton buffer (qui, soit dit en passant, je trouve vraiment 'petit'...) un '\n'...Voila.

J'espere que ca repond a ton questionnement.

PS : ca veut dire quoi "le fwrite est recursif" ? Tu entends quoi par la ?

+2(p - n)


Cette discussion est classée dans : log, printf, include, fp, mess


Répondre à ce message

Sujets en rapport avec ce message

Probleme reception sur un serveur windows en vc++ [ par alfred ] Salut a tous!!g un probleme dans mon serveur le recv renvoie la valeur -1 et je ne vois pas pouquoi, toute mes socket sont positives le client envois Un ptit pb en C, Debutant 2 . [ par Tkaos ] Voila encore un probleme, apres avoir appris a me servir du "if" j'ai fait ce petit programme :#include #include #include int main(void) { char szname Pb debutant "C" 2 [ par Tkaos ] Voila encore un probleme, apres avoir appris a me servir du "if" j'ai fait ce petit programme :#include #include #include int main(void){char szname[1 programmation joystick [ par MadNomad53 ] J'ai un probleme de linkage avec ce programme:voici le source:#include #include // pour printf#include // pour les fonctions du joystickvoid main(){ chaine de caractere [ par zincben ] Bonjour je comprend pas tres bien pourquoi ce code passe bien #include void main() { FILE *fp; char nom[10]; fp = fopen("barre.txt", "r+"); if (fp) { Problême avec Getchar... [ par Kolibot ] Je débute en C et je suis tombé sur un problême... : #include #include int main (){int a,b,d;a = 0; b = 0;printf ("Calculatrice : \n\n");printf ("Vale Petit probleme de code en C sur Linux !! [ par UncleShu ] Je voudrais créer un fichier dans le réperoire personnel d'un utilisateur mais mon code ne marche pas !!#include #include #include #define DIR $HOM Les chaines de caractère et biens d'autres problemes. Si vous voulez aider un nouveau ds l'art du C vous etes servi!!! [ par Lavieillefolle ] Voilà voilà j'ai écris un code, enfin g tanter d'écrire et comme vous allez le constater je ne possede aucune experience. Alors si vous pourriez résou SDL: La commande printf(""); n'affche rien! [ par yugiohjcj ] Bonjour,voici la source de mon programme:#include #include #include #define true 1int main(int argc, char *argv[]){ printf("\a"); if ( SDL_Init Petit Bug [ par LordBob ] Bonjour a tous,voici deux fonctions:#include #include // Variableschar SourceFile[1024];char DestinationFile[1024];<b


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 0,468 sec (4)

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