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.
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' )
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 !!!!!!!!!!!!!!!!!!!!
Partager