lseek et methode - C - Programmation
Marsh Posté le 20-10-2004 à 21:28:52
Tu pourrais utiliser getline (extension GNU non standard) ou fgets. Au lieu d'un tableau de taille fixe, il faudrait dans les deux cas utiliser malloc et agrandir le buffer avec realloc s'il est trop petit.
Marsh Posté le 21-10-2004 à 00:42:03
ben émule le alors (une classe qui a la tronche d'un tableau mais qui fait en fait ce qu'il faut) ?
Sinon, c'est la peine, il vaut mieux tout charger en ram si c'est faisable, les E/S bas niveau, c'est un appel système à chaque fois, pas de bufferisation, y a pas pire en performance
Marsh Posté le 21-10-2004 à 01:42:36
je suis entrain de coder la version simple, mais j ai un bug
que je narrive pas a deceler
Code :
|
il maffiche deux fois "number of lines : n"
le problem est que apperement il fait une fois la boucle avec le bonne input (2), puis 10 juste apres
le seule moment on j utilise 10 c est quand lis le fichier.
c est un problem de flush stdin ?
Marsh Posté le 21-10-2004 à 02:15:39
je te dis de pas utiliser getchar, ni printf, ni rien !
sinon ça sert à quoi de se la jouer bas-niveau ?
où alors t'as rien bité et tu ferais mieux d'utiliser partout les FILE* (puisque tu les utilises déjà)
# !=0)
# // 0 means eof
-> != -1
manque un close
(void *) my_read_str
--> magnifique ...
for (i=0; i<10;i++)
--> il se passe quoi si tu as lu moins de 10c ?
Marsh Posté le 21-10-2004 à 02:45:07
je me la joue bas niveau par ce qu on nous le demande je vais pas utiliser FILE* ..
pour le (void *) my_read_str
http://crasseux.com/books/ctutoria [...] ow%20level
A lot of students are asking - can we use scanf, fscanf, getchar, putchar, printf, fprintf, fread, fwrite? The answer is that you can use printf, scanf, gets etc to access stdin and stdout, but you must not use fprintf, fscanf, fgets, etc. Things that you find in section 2 of the unix manual are OK - read, write, open, close, etc. But you must not create any FILE * object. You should be working with file descriptors for disk I/O.
Marsh Posté le 21-10-2004 à 08:50:54
c'est con quand même, FILE* ou pas, c'est la même utilisation
Citation : you can use printf, scanf, gets |
non, c'est bon j'ai rien dit, tout s'explique
Marsh Posté le 21-10-2004 à 09:00:47
...
Citation : but you must not use fprintf, fscanf, fgets, etc. |
Marsh Posté le 21-10-2004 à 13:26:02
voila ca marche un pb etait le dernier buffer qui se remplissait apres l eof.
ssize_t est venu a mon secours
Code :
|
Marsh Posté le 21-10-2004 à 13:29:00
while (scanf("%d", &input) != -1) //EOF
moi je te fais un != -1 sans EOF quand tu veux
printf("%c",my_read_str[i]);
printf("\n" );
/(sizeof(char))
ouah balaise comme calcul
putchar spa pour les ienchs
Marsh Posté le 21-10-2004 à 14:19:48
moi je te fais un != -1 sans EOF quand tu veux
pour le eof comment pourais je faire pour arreter le program avec ctrl D sinon ?
Marsh Posté le 20-10-2004 à 16:25:09
,
j ai un fichier file, je veus retourner la ligne de text corespondante au chifre entre.
quel est la bonne methode ? (en low lovel i/o)
je pensais lire le fichier 10 par 10, regarder dans le buffer le char '\n' et
incrementer un compteur de ligne (\n = nouvelle ligne) ainsi que SEEK_CUR.
quand le counteur = nombre de ligne voulue, je cherche le '\n' suivant ou l EOF
et j afficher la ligne.
En fait c est le coup du buffer[10] y a pas plus simple ?