Bonjour,
Je programme en C, j'ai un fichier qui contient ceci :
Je voudrais ne récupérer que le 5 et le 3 dans des variables.hello frfr 5 3
Merci beaucoup.
Bonjour,
Je programme en C, j'ai un fichier qui contient ceci :
Je voudrais ne récupérer que le 5 et le 3 dans des variables.hello frfr 5 3
Merci beaucoup.
Si tu as juste des cas semblables:
C'est une piste. Tu peux ensuite l'améliorer pour stocker plusieurs valeurs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 int i=0,fd,result; char tmp; if(fd=open("file.txt")) { while(read(fd,&tmp,1) if((tmp>='0') && (tmp<='9')) result=tmp-'0'; }
C'est la variable de type char que j'ai déclarée en début de code.
j arrive pas a affiché le valeur stocké dans le fichier quand je lance le programme il boucle en fait
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 include<stdio.h> #include<stdlib.h> #define TAILLE_MAX 100 int main(int argc, char *argv[]) { int tab[2]={0},i=0,result,fd; FILE* fichier=NULL; char tmp; fichier =fopen("probleme.txt","r"); if(fichier!=NULL) { while (read(fd,&tmp,1)) { if((tmp>='0') && (tmp<='9')) result=tmp-'0'; } fclose(fichier); } printf("%d\n",result); r
C'est normal... Tu as déclaré un int fd non initialisé et non modifié, tu le compares ensuite, donc ça fait une boucle infinie.
Il faudrait plutot utiliser open (2) avec la flag que tu veux (voir man) car il renvoie un file descriptor, que tu stockeras dans fd.
Je reprends:
-Tu utilises la fonction open (2) qui te renverra un file descriptor que tu stockeras dans fd.
-Tu utilises read (2) pour lire dans lle fichier grace au file descriptor.
-En gros tu obtiendra quelque chose comme le code que je t'ai donné. Tu peux donc te baser dessus.
Ta question, posée comme cela, est trop vague et trop ambigüe.
En effet, tu ne précises pas si cette ligne contenue dans le fichier est un exemple, c'est-à-dire qu'elle peut être modifiée (et que le programme doive donc en tenir compte). Car si c'est le cas, il nous faut connaitre le format de ce fichier, et par conséquent savoir sur quels critères s'appuyer pour récupérer tel ou tel "token".
ici j ai un essai
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 include<stdio.h> #include<stdlib.h> int main(int argc, char *argv[]) { FILE* fichier = NULL; char car=""; fichier = fopen("probleme.txt","r"); if (fichier != NULL) { car=fgetc(fichier); while(car!=EOF) { if(car>"0" || car<"9") printf("%c", car); // On affiche le caractère stocké dans caractereActuel car = fgetc(fichier); // On lit le caractère suivant } fclose(fichier); // On ferme le fichier qui a été ouvert } return 0; }
ici il ma affiche tous le"s contenue d un fichier
Déja il faut utilisé >= ou <= sinon tu ne prendras jamais en compte le 0 et le 9. ensuite il ne faut pas utiliser des double quote, mais des simples.
Code : Sélectionner tout - Visualiser dans une fenêtre à part if(car>"0" || car<"9")
Donc ça doit être:
fiki
Code : Sélectionner tout - Visualiser dans une fenêtre à part if ( car<='0' || car<='9' )
GNU/Linux c'est une question de VI ou de MORE.
http://www.goodbye-microsoft.com
"Linux is user friendly, its just very selective of its friends*", m'enfou, je suis son pote :p
Un post vous est utile ou est constructif, ayez le réflexe du +1 pour le contributeur ( C'est gratuit et ça donne l'impression d'être utile :p )
Le tag et la ne sont pas fait que pour le décor, pensez-y !
R.I.P. F-k-z 13/06/2006 - 12/10/2011
*Linux est convivial, il est juste très sélectifs pour ses amis.
oui c est vrai ....mais j ai trouvé une autre idéé,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 #include<stdio.h> #include<stdlib.h> #include<ctype.h> #define TAILLE_LIG 100 int main(int argc, char *argv[]) { int k,i; char chaine[TAILLE_LIG]; FILE* fichier = NULL; char car=""; fichier = fopen("probleme.txt","r"); if (fichier != NULL) { while((fgets(chaine, TAILLE_LIG, fichier)!=NULL)&&i<TAILLE_LIG) // On lit maximum TAILLE_LIG caractères du fichier, on stocke le tout dans "chaine" { k=0; while(k<TAILLE_LIG &&chaine[k]==' ') { k++; } if(chaine[k]>'a'&& chaine[k]<'Z') { k++; } else printf("val %c\n ", car); // On affiche le caractère stocké dans caractereActuel car = fgetc(fichier); // On lit le caractère suivant } fclose(fichier); // On ferme le fichier qui a été ouvert } return 0; }
ca marche pas encore !!!!!!!!!!!!!!!!!!!!
... je suis limite au bord du suicide là....
mais encore ??
Code : Sélectionner tout - Visualiser dans une fenêtre à part if(chaine[k]>'a'&& chaine[k]<'Z')
aller je suis tellement désespéré que je te file 4 liens qui vont changer ta vie:
http://www.asciitable.com/
http://c.developpez.com/faq/
http://c.developpez.com/cours/
http://c.developpez.com/livres/
Et heuresement que tu programmes en C... Arrivé à un stade faut pas continuer à essayer, change de voie, laisse tomber l'info (pour le bien des membres du forum (sisi je t'assure) )
GNU/Linux c'est une question de VI ou de MORE.
http://www.goodbye-microsoft.com
"Linux is user friendly, its just very selective of its friends*", m'enfou, je suis son pote :p
Un post vous est utile ou est constructif, ayez le réflexe du +1 pour le contributeur ( C'est gratuit et ça donne l'impression d'être utile :p )
Le tag et la ne sont pas fait que pour le décor, pensez-y !
R.I.P. F-k-z 13/06/2006 - 12/10/2011
*Linux est convivial, il est juste très sélectifs pour ses amis.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 #include <stdio.h> int main(void) { int val1, val2; FILE *f = fopen("file.txt", "r"); if(f){ if(fscanf(f, "%*[^0-9]%d%d", &val1, &val2) == 2) printf("val1 = %d\nval2 = %d\n", val1, val2); fclose(f); } return 0; }
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager