Bonsoir,
je m'arrache les cheveux depuis trois jours sur un problème assez bête : quand je lis un fichier sur l'entrée standard, dès qu'il dépasse le millier d'octets, il est tronqué.
Je voudrais pouvoir utiliser les redirections avec mon programme, par exemple :
mais visiblement je ne m'y prends pas de la bonne manière.
Code : Sélectionner tout - Visualiser dans une fenêtre à part mon_programme < gros_fichier.txt
Voici un code simpliste avec lequel je peux reproduire le problème :
Pour les fichiers de moins de 1 Ko, ça m'affiche la bonne taille. Ça marche aussi avec un fichier un peu plus gros que mon buffer, 1197 octets. Mais pour les fichiers plus gros, j'obtiens des valeurs toujours inférieures à 1024.
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 // affiche la taille d'un fichier #include<stdio.h> #define BUFFER_SIZE 1024 char buffer[BUFFER_SIZE]; int main() { int n; unsigned long long int i = 0; while (n = fread(buffer, sizeof(char), BUFFER_SIZE, stdin)) { i += n; } printf("%llu\n", i); return 0; }
J'ai essayé aussi avec fgetc, même résultat. En revanche, pas de problème quand j'ouvre le fichier directement avec fopen, mais alors je ne peux pas utiliser les redirections…
Si ça peut aider, je suis sous Windows. J'ai essayé sans succès sous cmd et Powershell – mais j'ai l'intuition que ça ne dépend pas du système. C'est agaçant, je suis sûr que je passe à côté d'un truc évident… J'ai besoin de votre aide !![]()
Partager