[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4980: session_start(): Write of lock failed
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4980: session_start(): Unable to clear session lock record
Lire un fichier par redirrection [3 réponses] : ϟ Informatique - 154410 - Forum de Mathématiques: Maths-Forum

Lire un fichier par redirrection

Discutez d'informatique ici !
Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 19:42

Lire un fichier par redirrection

par Rockleader » 04 Avr 2014, 18:04

Bonjour,

afin de stocker les données fichier construit sous cette forme, j'aurais besoin d'un coup de main

5
4
8
9
1
etc etc


Je précise que je ne veux pas ouvrir le fichier; en fait lorsque je vais lancer mon programme je vais faire prog.c. <PATH/fichier.txt

Ce qui fait que les nombres vont se retrouver dans mon scanf à chaque fois. Mais je n'arrive pas à m'arrêter

J'ai fait quelque chose comme ça

Code: Tout sélectionner
do {
   scanf("%d",&nb);
   if(nb!='\0')
   {
      printf("%d\n",nb);
   }
   }while(nb!=EOF);


Mais je part dans une boucle infini et mon dernier nombre du fichier va s'afficher indéfiniment. Une idée sur la façon dont on peut faire ce genre de lecture sans connaitre la taille ?


EDIT: J'ai du mieux, en testant la boucle sur le retour de scanf j'attrape toutes les bonnes valeurs, mais j'ai la dernière qui se met deux fois...

Pour

5
4
8
9
1

s'affiche

5
4
8
9
1
1

Code: Tout sélectionner
int nb,ret;
   do {
   ret=scanf("%d",&nb);
      printf("%d\n",nb);
   }while(ret==1);
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !



joel76
Membre Relatif
Messages: 230
Enregistré le: 11 Fév 2013, 16:31

par joel76 » 05 Avr 2014, 11:07

Ce n'est pas teste mais essaye
Code: Tout sélectionner
int nb,ret;    
 while (scanf("%d",&nb) == 1)
    printf("%d\n",nb);

EDIT j'ai testé et j'ai rajouté le == 1

Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 19:42

par Rockleader » 05 Avr 2014, 12:54

Je me suis débrouillé autrement j'ai tout simplement stocké tout sauf la dernière valeur ;)

C'est pas très propre mais bon ça change rien à l'algo =)

Merci quand même !
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !

Avatar de l’utilisateur
ampholyte
Membre Transcendant
Messages: 3940
Enregistré le: 21 Juil 2012, 08:03

par ampholyte » 05 Avr 2014, 16:08

Bonjour,

Si ton fichier est construit de cette manière :
Code: Tout sélectionner
1
2
3
4
5


Il te suffit alors d'utiliser la fonction fgets puis un atoi par exemple.

Code: Tout sélectionner
char  buffer[15 + 1] = {0};
while (fgets(buffer, 15, stdin) != NULL) {
    fprintf(stdout, "%d\n", atoi(buffer));
}


Sinon avec le scanf, il te suffit de rajouter une fonction vidant le buffer.
Code: Tout sélectionner
void purge(void) {
    int c;
    do {
        c = fgetc(stind);
    } while (c != '\n' && c != EOF);
}

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 5 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite
[phpBB Debug] PHP Warning: in file Unknown on line 0: Unknown: Failed to write session data (memcached). Please verify that the current setting of session.save_path is correct (172.16.100.103:11211)