begin process at 2010 03 15 16:10:09
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Problème avec fwrite


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

Problème avec fwrite

jeudi 23 juin 2005 à 10:48:56 | Problème avec fwrite

riep

bonjour
j'ai un petit problème avec fwrite, en fait je voudrais tout simplement recopier les données d'un fichier 1 dans un fichier 2 seulement si ces données  n'existent pas dans  fichier2
voici le code que j'ai pondu:
 
int main()
{
    int value,taille;
    FILE *fp;
    FILE *fp1;
    char *test;
    char command[100];

    test = (char*)malloc(sizeof(char));

    fp = fopen("fichier1","r");
    fp1 = fopen("fichier2","a");
    while(!feof(fp))
    {
       fgets(test,10,fp);
       taille = ftell(fp);
       sprintf(command,"grep \"%s\" fichier1", test);
       if(system(command))
       {
          fwrite(test,sizeof(char),taille,fp1);
        }
    }
    fclose(fp);
    fclose(fp1);
    return 0;
}

-voici le contenu du fichier1 :
salut
hello
bonjour

-le fichier fichier2 est vide au début

et voila ce que j'obtiens, dans test1.txt, lorsque je lance le programme:
salut
hello^@^@^@ibonjour

je ne sais pas pourquoi il apparait ces caractères en plus.
Autre problème ne connaissant pas à l'avance la taille d'une ligne du fichier1, je voulais mettre une valeur élévée (1000) pour fgets mais ceci me génère un segmentation fault.
j'espère que vous pourrez m'aider.
merci d'avance

jeudi 23 juin 2005 à 11:16:25 | Re : Problème avec fwrite

riep

j'ai trouvé la soluce c'était un peu con désolé
il fallait que je soustrais la taille de la ligne précedente  à cahque nouvelle ligne

while(!feof(fp))
{
    fgets(test,10,fp);
    taille = ftell(fp);
    taille = taille - taille1;
    sprintf(command,"grep \"%s\" fichier1, test);
    if (system(command))
    {
       fwrite(test,sizeof(char),taille,fp1);
    }
    taille1 = taille1 + taille;
}

jeudi 23 juin 2005 à 11:21:22 | Re : Problème avec fwrite

darfeuille

ton grep, tu ne devrais pas plutot le faire sur "fichier2"?
sprintf(command,"grep \"%s\" fichier1", test) -> sprintf(command,"grep \"%s\" fichier2", test);

et aussi :

test = (char*)malloc(sizeof(char));
en faisant ca, si je ne dis pas de betise, tu alloue un seul caractere non?
tu devrais plutôt faire test = (char*)malloc(100 * sizeof(char))
jeudi 23 juin 2005 à 11:22:06 | Re : Problème avec fwrite

darfeuille

ah trop tard lol :)


jeudi 23 juin 2005 à 11:24:03 | Re : Problème avec fwrite

riep

tu as raison pour le grep j'avais pas fait gaff merci bien

jeudi 23 juin 2005 à 11:26:30 | Re : Problème avec fwrite

riep

par contre j'ai un autre problème maintenant, j'ai bien toute les informations ds fichier2 mais elles sont toutes attachées, il n'y a pas de saut de ligne
jeudi 23 juin 2005 à 15:28:06 | Re : Problème avec fwrite

riep

autre pb (décidement) j'arrive le programme fonctionne bien lorsque le fichier 2 est vide mais si jamais le fichier2 contient qqchose, le programme ne rajoute qu'une seule ligne au fichier 2 (malgré qu'il y est plusierus ligne ds fichier1 qui ne soient pas ds fichier2);
jeudi 23 juin 2005 à 16:05:09 | Re : Problème avec fwrite

darfeuille

j'ai l'impression que tu lis les caractères un à un
Si c'est le cas, il ne passe jamais a la ligne puisque '\n' il le trouve dans le fichier 2

Tu devrais essayer de mettre :

test = (char*)malloc(100 * sizeof(char);

voir si ca marche mieux

(oublie pas de liberer a la fin)

tiens moi au courant


jeudi 23 juin 2005 à 16:08:10 | Re : Problème avec fwrite

riep

j'ai essayé mais ca marche nikel qd le fichier 2 est vide mais qd il contient déjà qqchose il prend une ligne au "pif" ds fichier 1 et le balance ds fichier2
vendredi 24 juin 2005 à 08:04:58 | Re : Problème avec fwrite

darfeuille

vérifie que grep te renvoie le bon truc
J'ai l'impression que tu as inversé des paramètres




1 2

Cette discussion est classée dans : problème, test, char, fp, fwrite


Répondre à ce message

Sujets en rapport avec ce message

problème tout bête [ par Raoul12 ] voilà, je débute dans le c++ et je voudrais faire ça:char hohun[32] ;hohun = "hohun" ;mais ça ne marche pas... pourtant si je fais ça:char hohun[32] = problème [ par Raoul12 ] voilà, je débute dans le c++ et je voudrais faire ça:char hohun[32] ;hohun = "hohun" ;mais ça ne marche pas... pourtant si je fais ça:char hohun[32] = Switch et char [ par Stoomm ] Bonjour,Si j'ai :char test[10];strcpy (test, "monchar ";Si je souhaite faire un switch : Je fais comment ???switch (test){...}Il aime pas ! Quelqu'un problème de lecture en c++ sous vc++6 [ par os22 ] j'essaie de lire un fichier ayant le contenu suivantmarc;collin;4506777228;906 boule;longueuil;j4j1t5;qc;14;allo;roger;dumais;5413432128;1150 dumahel; problème de concaténation [ par moloko2000 ] Existe t'il un moyen de concaténer des char * des char et des int?Je supose que non mais bon .... debutant en c, probleme pour un programmme de compression [ par araborgne ] voila donc je cherchais un programme permettant de compresser et decompresser un fichier texte, et image.j'en ai trouver un, mais il est ecrit en c++, Problème avec char* [ par Wiwi ] Bonjour tt le monde, j'ai une tite pro (bidon) avec ce morceau de programme. Lors de sa compilation il n'y a aucune erreur, par contre lors de son exé conversion int en char* [ par arwenita ] Encore un petit problème en C++...Dans mon programme, je voudrais afficher une liste de nombres (premiers), que je récupère de la fonction Crible(n).L Problème de delete [ par ManTico ] Salut à tous, j'ai un peu de peine avec la gestion de la mémoire et je voulais savoir deux choses :- pourquoi en mode Debug mon prog plante sur les de Info sur les pointeurs [ par HCJarod ] slt, je me demande pourquoi on ne peut pas ecrire (ou c'est mon compilo qui merde)char tab[50];....tab++alors qu'avecchar* tab=new char[50]; oui.techn


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

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,686 sec (3)

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