begin process at 2012 05 30 01:05:02
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

ouverture d'un gros fichier txt ( taille > 3Mo)


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

ouverture d'un gros fichier txt ( taille > 3Mo)

lundi 3 août 2009 à 16:01:30 | ouverture d'un gros fichier txt ( taille > 3Mo)

malouve

Bonjour,

J'ai a traité des fichiers txt de valeurs dont je ne connais pas le nombre d'elements mais qui font plus de 3Mo.
J'ai essayé la fonction fread avec ce code pour allouer suffisamment d'espace pour ouvrir mon fichier txt:
fp = fopen("C:\\projet C\\fic1.txt","r");
// deplace le curseur a la fin
fseek(fp,0,SEEK_END);
// taille du fichier
long sizeFile=ftell(fp);
// on se repositionne au debut
fseek(fp,0,SEEK_SET);
// allocation
char * buffer=(char*)malloc(sizeFile+1);
// lecture
fread(buffer,2,sizeFile,fp);


mais rien, je n'arrive toujours pas à l'ouvrir
je signale que mon fichier ne contient qu'une seule colonne de valeur décimale ( float) .

Je voudrais recupérer ces valeurs dans un tableau afin d'effectuer des traitements la dessus.

pour un plus petit fichier ouvert en lecture
j'ai utilisé :
while (!feof(fp))
{
fscanf (fp, "%f", &internal_table[i]);

i++;
}

çà marche bien mais là , je sèche un peu


Merci à ceux qui pourront m'aider à me sortir de ce problème

lundi 3 août 2009 à 16:55:12 | Re : ouverture d'un gros fichier txt ( taille > 3Mo)

fregolo52

Membre Club

Utilise les balises "code" ca rend ton messages plus clair.

Je ne vois pas ton souci, j'ai déjà ouvert des fichiers de plus de 100Mo avec fopen. Ca veut dire quoi : "mais rien, je n'arrive toujours pas à l'ouvrir ", fp == NULL ?

lundi 3 août 2009 à 17:15:51 | Re : ouverture d'un gros fichier txt ( taille > 3Mo)

malouve

desolé si je n'ai pas utilisé les balises codes

oui j'ai le message fp== null car j'ai programmé un message d'erreur

Code C/C++ :
fp = fopen("C:\\projet C\\ fic2.txt","r"); 

if(fp == NULL){
printf("Impossible d'ouvrir le fichier %s\n", fp); system("pause");
exit(-1);
}


mon problème est que le fichier existe bien, j'ai crée un autre fichier de plus petite taille et il n'y pas de problème , j'arrive bien à l'ouvrir et à récupérer les données avec
Code C/C++ :
while (!feof(fp)) 

{
fscanf (fp, "%f", &internal_table[i]);

i++;
}


et donc j'ai pensé que le problème est lié à la taille de mon fichier , d'ou l'utilisation de
Code C/C++ :
fp = fopen("C:\\projet C\\ fic2.txt","r"); 

if(fp == NULL){
printf("Impossible d'ouvrir le fichier %s\n", fp); system("pause");
exit(-1);
}
// deplace le curseur a la fin
fseek(fp,0,SEEK_END);
// taille du fichier
long sizeFile=ftell(fp);
// on se repositionne au debut
fseek(fp,0,SEEK_SET);
// allocation
char * buffer=(char*)malloc(sizeFile+1);
// lecture
fread(buffer,2,sizeFile,fp);


mais là aussi, j'ai le message NULL
je te promets que l'emplacement de mon fichier est le bon et le nom aussi.

Merci si tu as une explication

lundi 3 août 2009 à 19:22:54 | Re : ouverture d'un gros fichier txt ( taille > 3Mo)

iloveprog

heu, le nom de ton fichier commence par un espace?
parce que la tu as :
fp = fopen("C:\\projet C\\ fic2.txt","r");
peut-être juste une erreur d'etourderie... :D

lundi 3 août 2009 à 19:47:56 | Re : ouverture d'un gros fichier txt ( taille > 3Mo)

Chouchou182

Salut malouve.

Tout d’abord, il y a une espace dans le nom de fichier " fic2.txt" ; est-ce bien voulu ?

Sinon, en cas d’erreur, fopen renvoie NULL et renseigne la variable errno. As-tu pensé à regarder de ce côté-ci ? par exemple en faisant appel à la fonction perror.

Enfin il me semble que tu devrais te dispenser de fseek. Dans unistd.h il y a une fonction nommée filelength. Je suppose que l’API Windows est aussi bien équipée.

Bonne prog,
--
Chouchou.

Ps : sinon Perl c’est bien pour manipuler pour manipuler les fichiers…

lundi 3 août 2009 à 20:00:41 | Re : ouverture d'un gros fichier txt ( taille > 3Mo)

malouve

merci pour vos réponses
mais dans mon code, je n'ai pas d'espace, je viens encore de vérifier chemin et syntaxe mais non, je n'arrive pas à ouvrir
j'ai toujours impossible d'ouvrir le fichier

lundi 3 août 2009 à 20:05:41 | Re : ouverture d'un gros fichier txt ( taille > 3Mo)

Chouchou182

Et que dit perror ?

lundi 3 août 2009 à 20:19:02 | Re : ouverture d'un gros fichier txt ( taille > 3Mo)

malouve

je cherche la syntaxe avec perror sur le net car je ne connaissais pas cette fonction, je suis debudante en C
avec perl penses-tu que peux faire des analyses de fichiers txt, je recherche dans mon fichier des valeurs particulières qui me donnent des tracés spéciaux?
serait-ce possible de faire un genre de détecteur en PERL?

lundi 3 août 2009 à 21:26:22 | Re : ouverture d'un gros fichier txt ( taille > 3Mo)

malouve

une erreur stupide de ma part, je viens de voir que l'extension n'est pas .txt mais .log
merci à tous et a chouchou182, ma question demeure
j'ai testé le perror et c'est comme çà que je me suis rendue compte
merci à tous

lundi 3 août 2009 à 21:34:56 | Re : ouverture d'un gros fichier txt ( taille > 3Mo)

Chouchou182

Salut,
D'abord, désolé pour la fausse information concernant filelength. Alors voici un exemple d'utilisation de perror et fstat, cette-dernière n'étant disponible que pour certains systèmes (SVr4, 4.3BSD et POSIX.1-2001, dixit man).

Code C/C++ :
#include<stdio.h>

#include<sys/stat.h>

int
main()
{
FILE *fp;
struct stat st;

fp = fopen(__FILE__,"r");
if (fp == NULL)
{
perror("fopen");
return 1;
}

if (fstat(fileno(fp), &st) != 0)
{
perror("fstat");
}
else
{
printf("Taille du fichier: %ld octets\n", st.st_size);
}

fclose(fp);

return 0;
}


Ensuite, concernant le choix du langage...
Si le critère permettant de décider si une valeur est particulière ou non peut être décrit par une expression régulière, alors c'est une ligne de AWK!
L'expression "me donnent des tracés spéciaux" n'est pas très explicite; si tu peux la détailler un peu, cela pourrait aider. Il existe peut-être des outils plus adéquats que le langage C qui reste de très bas niveau (mais ça peut s'avérer rigolo, si c'est ce qui est recherché).

Bonne prog,
--
Chouchou.


1 2

Cette discussion est classée dans : fichier, taille, txt, color, fp


Répondre à ce message

Sujets en rapport avec ce message

enregister les resultats dans un fichier txt. [ par ekinoks ] j'essepaire que vous allé pouvoir m'evité le susside:-/c'est un decrypeteur de fichier, j'aimeré enregistré tout les resultat dans un fichier TXT com probleme pour ecrire dans un fichier en C [ par kekobaron ] Bonjour,Je suis novice en C et je suis confronté à un probleme. Je souhaite enregistrer une phrase dans un fichier mais seul le premier mot est enregi Lecture de fichier TXT [ par beb30 ] Voila je souhaite faire un programme en C qui me permette de retrouver une information de type Char rentrée manuellement. Je souhaite aller lire ds un ouverture d'un fichier txt sur visualC++ [ par drcmomo ] Bonjour s'il vous plait aidez moi je dois ouvrir un fichier txt sur visual mon programme n'arrive pas a ouvrir le fichier. <SPAN style="F pb de chargement d'un fichier txt dans un tableau [ par malouve ] Bonjour, j'ai un problème bloquant dans mon projet et j'ai désespérement besoin d'un coup de main [^^sad2] j'ai fait un traitement sur un fichier de b union de deux fichiers [ par boualiasma ] Bonjour, Je voulais ajouter autres lignes (autres données) à la fin du fichier 'output.txt' à partir d'un autre fichier 'exp.txt' le contenu de fich Incrementer le nom du fichier d'entrée [ par souffrance ] Salut ! J'essaie de trouver comment incrémenter le nom du fichier texte d'entrée. En faite, je voudrais que dès que le traitement du premier fichier deconcatenation de chaine [ par malouve ] Bonjour, j'ai un fichier txt à traiter en C, ayant plusieurs fichiers, j'entre le chemin du fichier au clavier, je voudrais en sortie, avoir un fich traitement simultannée sur des fichiers [ par boualiasma ] Bonjour, Je voulais faire un traitement en même temps sur un nombre de fichier.J'ai trouvé des difficultés pour résoudre ce problème. Je vous expliq


Nos sponsors


Sondage...

Comparez les prix

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 : 5,772 sec (3)

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