|
Bas de page | |
---|---|
Auteur | Sujet : [C] Compter le nombre de lignes d'un fichier |
Publicité | Posté le 27-02-2006 à 22:04:35 |
skelter | te fais pas chier avec les i/o posix (open, read,...), utilise fopen et le type FILE, apres il suffit de boucler sur fgetc et de compter le nombre de caractere ayant la valeur '\n' (le nombre de ligne == le nombre de caractere de fin de ligne) |
matafan | Sauf eventuellement pour la derniere ligne. |
skelter | non, en fait '\n' est un caractere de fin de ligne ou de nouvelle ligne (n -> newline), le compte est toujours bon et si tu fais allusion à un fichier qui se termine par un '\n' ca veut juste dire qu'il se termine par une ligne vide Message cité 1 fois Message édité par skelter le 27-02-2006 à 23:50:32 |
s0d4 Je charge des sacs de sable |
|
chrisbk - | mes fesses, memory mapping sur le fichier, parcours de bourrin pour trouver \n et vlan. |
chrisbk - | le memory mapping pour les fichiers textes, la solution pour nous, les feneasses |
matafan |
|
franceso |
Emmanuel Delahaye C is a sharp tool |
--------------- Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/ |
Publicité | Posté le 28-02-2006 à 09:55:42 |
Emmanuel Delahaye C is a sharp tool |
--------------- Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/ |
Emmanuel Delahaye C is a sharp tool |
--------------- Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/ |
skelter |
Emmanuel Delahaye C is a sharp tool |
--------------- Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/ |
skelter | je sais pas, on peut avoir de meilleurs performances avec un buffer plus gros sans rien changer au code ? |
chrisbk - | ca te dis mon gros buffer dans tes petites performances ? |
skelter | oue de toute facon suffit d'essayer mais moi je m'en fout j'ai jamais utilisé ni meme vos pas portable de file mapping |
chrisbk - | le file mapping, c'est du bonheur en barre à tartiner. ca te fait genre un gros char * en mémoire (sauf que le \0 a la fin est pas garanti, donc strn* en force) et vlan. En plus sous nux c'est tout con a faire (sous win c'est un peu plus pénible). |
Delantera Hail Seitan. | Merci pour vos réponses!
|
Emmanuel Delahaye C is a sharp tool |
--------------- Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/ |
Delantera Hail Seitan. | Ben c pour nous apprendre a utiliser le bas niveau, la suite du TP est en haut niveau et pi c un IUT info
|
chrisbk - |
|
Sve@r |
--------------- Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche. |
Delantera Hail Seitan. | C'est pas un devoir mais un TP personnel, je suis pas noté dessus!
|
Emmanuel Delahaye C is a sharp tool |
--------------- Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/ |
Delantera Hail Seitan. | Ca marche, merci bien |
Sve@r |
--------------- Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche. |
s0d4 Je charge des sacs de sable |
|
matafan | Rien à voir avec un quelconque "buffer cache dans un noyau". Et les fopen, fgetc et autres setvbuf font partie du C ANSI. Si tu veux prendre les gens de haut, fais le plutôt sur un sujet que tu maitrise. |
s0d4 Je charge des sacs de sable | Ah ? tu crois que c'est ta fonction fgets qui va aller bufferiser ce qu'il y a avant/après ce qu'il y a ce que tu souhaites lire ? Non. fgets fait lui un appel système (read), qui lui ensuite va aller voir dans le noyal ce qu'il faut prendre, et le noyal va lire plus de données qu'il n'en faut pour ne pas avoir à lire au prochain read. On appelle ça un cache, et là, en l'occurence, le buffer cache ... C'est ce que notre ami nous expliquait. Et mon post disait que oui, ça permet d'avoir une bonne vitesse d'execution, mais ça ne permettait pas de s'affranchir de bien coder.
|
matafan | Perdu. Oui justement, la bufferisation est faite par la libc. Quand tu fais un appel a fgetc, la libc va typiquement appeler read (le sytem call) pour lire un bloc complet de données (généralement 4kB, mais ça peut évidemment varier d'une platefome à l'autre). Les appels ultérieurs à fgetc piochent ensuite dans le buffer de la libc, sans appel à read. L'avantage c'est que ca limite le nombre de system call, qui sont en toujours en eux-même très couteux (sauvegarde du contexte, copyout...).
|
Emmanuel Delahaye C is a sharp tool |
--------------- Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/ |
s0d4 Je charge des sacs de sable |
|
chrisbk - |
|
Emmanuel Delahaye C is a sharp tool |
Message édité par Emmanuel Delahaye le 06-03-2006 à 20:59:31 --------------- Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/ |
chrisbk - |
0x90 → |
--------------- Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck. |
Publicité | Posté le |
Sujets relatifs | |
---|---|
Compter le nombre de fois qu'une expression revient | comment passer d un fichier d une classe a des fichiers d une classe? |
lecture de fichier avec sscanf | enegistrement fichier |
téléchargement fichier audio avec paypal | Fichier CONF |
Fonction : Si un nombre et negatif | [debutant C++] [Urgent] Tableau 2D nombre de colonne inconnu |
XML XSL et fichier volumineux : 100 Mo | |
Plus de sujets relatifs à : [C] Compter le nombre de lignes d'un fichier |