begin process at 2012 05 29 03:51:12
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Autre

 > 

insérer dans un fichier


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

insérer dans un fichier

lundi 31 juillet 2006 à 12:18:41 | insérer dans un fichier

catamenia

Membre Club
bonjour,

J'arrive à écrire dans un fichier text en c++ grace a writeFile mais ça écrase le text qu'il y a derriere alors que j'aimerais pouvoir insérer dans se fichier.

comment faire?

merci
lundi 31 juillet 2006 à 12:43:03 | Re : insérer dans un fichier

vinc1008881

simple en C, il faut faire ceci :

FILE *fichier;
if(!fopen("nomdufichier", "a")return 1; /*le a signifie ajout*/
fputs ("cette info sera à la fin du fichier", fichier);

en fait il faut ouvrir ton fichier en mode ajout, ce que la chaine de caractère "a" indique à fopen()

lundi 31 juillet 2006 à 12:44:41 | Re : insérer dans un fichier

catamenia

Membre Club
je veux pas insérer a la fin mais au milieu
lundi 31 juillet 2006 à 13:16:27 | Re : insérer dans un fichier

ElectricalMan

regarde ça :
http://www.cppfrance.com/infomsg_INSERER-TEXT-DANS-FICHIER_787224.aspx#5


c pour rajouter du texte au début d'un fichier. mais si tu souhaites le faire au mileu, tu devras par exp ;
1- te positionner là où tu veux rajouter du text (pos)
2- copier le reste du text dans un buffer
3- Revenir à pos  et faire pareil que si t'étais au début

moi je te file ce que j'ai fait pour le rajout au début d'un fic mais c en C    :


//-----------------------------------------------------------------
// fonction qui calcul la taille d'un fichier
//-----------------------------------------------------------------
long tailleFic(FILE* fic)
{
int caractereActuel=0;
long taille=0;
  
 rewind(fic); // On revient au début du fichier

  // Boucle de lecture des caractères un à un
 while (caractereActuel != EOF) // On continue tant que fgetc n'a pas retourné EOF (fin de fichier)
    {
  caractereActuel = fgetc(fic); // On lit le caractère           
  taille++;
 };  
   
    return taille;
}

//-----------------------------------------------------------------
// fonction qui rajoute un texte au début d'un fichier
//-----------------------------------------------------------------
void rajoutTextDansFic(FILE* fic, char str[])
{
char *ficBuffer=NULL, strLigne[255]="";
long taille=0;
int ligne1=1;

 taille = tailleFic(fic);
 
 if( (ficBuffer = malloc((taille)*sizeof(*ficBuffer))) == NULL)
  exit(0);

 rewind(fic);

  // On copie le contenu de fic dans ficBuffer
 while( fgets(strLigne, 255, fic) != NULL)
 {
  if (ligne1)
   strcpy(ficBuffer, strLigne);
  else
   strcat(ficBuffer, strLigne);

  ligne1 = 0;
 }

 rewind(fic);
 fprintf(fic, "%s", str); // On écrit str au début de fic
 fprintf(fic, "%s", ficBuffer); // On rajoute après ficBuffer qu'on avait sauvegardée

 free(ficBuffer);
}

lundi 31 juillet 2006 à 13:28:14 | Re : insérer dans un fichier

ElectricalMan

oui, une précision : 

   // ouverture du fichier input en mode r+
if( (fic = fopen("nomDuFichier","r+")) == NULL ) 
  exit(0);
lundi 31 juillet 2006 à 14:30:01 | Re : insérer dans un fichier

catamenia

Membre Club
ok il y a la méthode SetFilePointer pour définir la ou on va se positionner mais il n'exite pas de GetFilePointer.

Apres avoir copier la fin du fichier dans un buffer, je fais comment pour retourner la ou j'étais étant donné que la copie de la fin du fichier me positionne à la fin du fichier?
lundi 31 juillet 2006 à 14:37:52 | Re : insérer dans un fichier

catamenia

Membre Club
je doits compter le nombre de caractères écrit depuis le début du fichier?
lundi 31 juillet 2006 à 14:47:12 | Re : insérer dans un fichier

ElectricalMan

Apres avoir copier la fin du fichier dans un buffer, je fais comment pour retourner la ou j'étais étant donné que la copie de la fin du fichier me positionne à la fin du fichier? >>
SetFilePointer(hFile, 0, 0, FILE_BEGIN);
puis :
SetFilePointer  à la pos où t'était...

lundi 31 juillet 2006 à 16:03:19 | Re : insérer dans un fichier

SAKingdom

Membre Club
En fonction API, ça donne:

#define CENTER 50 // Le millieu du fichier pour ce bout de code

HANDLE hFile;
DWORD size, byte;
char *buffer;

hFile = CreateFile("Test.txt", GENERIC_READ|GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);

size = GetFileSize(hFile, 0);

SetFilePointer(hFile, CENTER, 0, FILE_BEGIN);

buffer = (char*)malloc(size-CENTER);

ReadFile(hFile, buffer, size-CENTER, &byte, 0);

SetFilePointer(hFile, CENTER, 0, FILE_BEGIN);

WriteFile(hFile, "Allo test 123 ", 14, &byte, 0);
WriteFile(hFile, buffer, size-CENTER, &byte, 0);

free(buffer);
CloseHandle(hFile);

Ce bout de code ajoutera du texte à la location 50 considérent que c'est le centre du fichier. Si le centre est connue, suffis de modifier CENTER. Sinon, il faut modifier CENTER comme ceci: size/2. Ce sera le centre relatif du fichier.

C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution

[ Lien ]
lundi 31 juillet 2006 à 16:03:50 | Re : insérer dans un fichier

SAKingdom

Membre Club
En fonction API, ça donne:

#define CENTER 50 // Le millieu du fichier pour ce bout de code

HANDLE hFile;
DWORD size, byte;
char *buffer;

hFile = CreateFile("Test.txt", GENERIC_READ|GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);

size = GetFileSize(hFile, 0);

SetFilePointer(hFile, CENTER, 0, FILE_BEGIN);

buffer = (char*)malloc(size-CENTER);

ReadFile(hFile, buffer, size-CENTER, &byte, 0);

SetFilePointer(hFile, CENTER, 0, FILE_BEGIN);

WriteFile(hFile, "Allo test 123 ", 14, &byte, 0);
WriteFile(hFile, buffer, size-CENTER, &byte, 0);

free(buffer);
CloseHandle(hFile);

Ce bout de code ajoutera du texte à la location 50 considérent que c'est le centre du fichier. Si le centre est connue, suffis de modifier CENTER. Sinon, il faut modifier CENTER comme ceci: size/2. Ce sera le centre relatif du fichier.

C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution

[ Lien ]


Cette discussion est classée dans : fichier, text, insérer


Répondre à ce message

Sujets en rapport avec ce message

Insérer text dans un fichier ! [ par ElectricalMan ] slt tt le monde,est ce qu'il y a un moyen d'insérer du texte dans un fichier ss écraser ce qu' y avait ?!//------------------------------------------- Insérer un fichier png sur son IHM avec visual 2005 [ par Nixeus ] Bonsoir à tous !     Je construit actuellement une IHM pour une mfc et souhaiterais y mettre des images de types PNG et non BMP, je souhaiterais conna taille fichier text [ par unionx ] bonjour a tous les equipes et les membres code-source j'ai un questionquand je creer un fichier *.txt sous linux il me donne une taille de 4ko je pens Impossible ouvrir fichier en C [ par fredsor ] Bonjour,Je dois développer une appli en C sous eMbedded Visual C++J'essaye betement d'ouvrir un fichier txt avec la fonction fopen(), mais il passe to Ecrire un long fichier [ par babaslow ] Bonjour,Existe-t il un moyen "simple" de créer un fichier texte d'environ 1000 lignes ?Parce qu'avec la fonction TEXT, on ne peut pas dire que ce soit afficher une image sur un fichier text [ par sarah87 ] salut,je veux afficher une image jpeg sur un fichier text ,de tel maniere :parcourir tous les pixels,si la valeur de pixel>0,alors copier la valeur  s Text Aleatoire [ par ideosphere ] Bon voila je voudrai faire un prog ki affiche une ligne choisi aleatoirement dans un fichier text.Je sais comment faire pour afficher tout le contenu A l'aide !!! j'arrive pas à insérer des guillemets dans fichier texte !!! [ par Ethylotek ] vici un bout de mon progprintf("Veuillez saisir votre nom:\n");gets(name);fflush(stdin);f=fopen("winnt.txt","wt");fprintf(f," FullName=%s\n",name);fcl Insérer/supprimer charactères dans un fichier [ par gwenChina ] Bonjour,En fait je doit aller modifier des charatères a l'intérieur d'un fichier (octet par octet). J'arrive tout a fait à écrire dans le fichier en r Insérer un ActiveX (ocx) Help svp!!!!!!!!!!!!!!! [ par pepsidrinker ] Salut tlm;Bah voila, je veux insérer un activex(.ocx fait en vb) dans on appli en c++  ki utilise les mfc evidemment(un appli console ou windows , c s


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 : 3,104 sec (4)

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