Problème lecture une chaine caractère fichier
zaerty
-
fiddy Messages postés 441 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 441 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai besoin de lire 25 lignes d'un fichier de format suivante:
Voici le programme que j'ai crée. Toutefois, ceci ne se compile pas.
Quelqu'un pourrait-il m'aider ?
Merci par avance.
J'ai besoin de lire 25 lignes d'un fichier de format suivante:
0 0.000 0.000 1 -90.618 299.859 2 -480.287 -366.363 3 -106.647 -202.037 4 -134.373 -364.665
Voici le programme que j'ai crée. Toutefois, ceci ne se compile pas.
#include<stdio.h>
#include <stdlib.h>
struct Client
{
float x; //abscisse
float y; //ordonnée
};
struct Client k[24];
int main()
{
FILE *file = NULL;
int i;
if((file = fopen("D:\\donnees.txt", "r") == NULL)/*ouverture du fichier en lecture*/
printf("Error: impossible d'ouvrir fichier donnees.txt\n");
else//non
{
while(fgets(struct Client, 25, file)!= NULL)
{
printf("%f%f",Client[i].x,Client[i].y);
}
}
getchar();
return(0);
}
Quelqu'un pourrait-il m'aider ?
Merci par avance.
5 réponses
-
salut,
fais le en Python (ou Ruby ou je ne sais quel autre langage évolué), sinon tu n'as pas fini de t'en voir.
En Python, on te fait ça en 5 minutes et 12 lignes
ça me fait pitié de voir les gens englués dans des langages comme le C ou le C++ pour faire des choses aussi simples.
Au fait c'est du C ou du C++ ton code stp ?-
-
Non mais c'est pas mal le C, c'est même très bien à mon avis. Tout dépend de ce qu'on projette de faire: si on a le temps d'attendre plusieurs mois avant de pouvoir faire des choses relativement élaborées, on peut se permettre d'apprendre progressivement le C; mais si on est pressé de pouvoir faire des choses , je ne vois pas comment faire autrement que de recourir à un langage évolué. L'idéal est d'apprendre les deux en même temps, un langage près de la machine qui permet de bien comprendre comment se passent les choses dans le détail, et un langage de haut niveau pour être productif. Python et C , c'est bien parce que Python est implémenté en C.
Y a pas que Python. Quoique j'aimerais bien savoir quels autres langages sont aussi pratiques et puissant en même temps que lui.
-
-
-
tiens d'ailleurs voici un code en Python:
with open('fichier.txt','r') as f: lignes = [] i = 0 while i<25: lignes.append(f.readline()[0:-1]) i+=1 print lignes
Il y a d'autres possibilités en fonction de la taille du fichier, des besoins, de la compétence du codeur, de la rapidité voulue, de la concision recherchée.... mais ce code de base marchera dans tous les cas, même si le fichier fait 2000 terabytes-
Merci pour votre réponse.
Je crois que j'ai mal choisi la fonction. Je cherche à quelle me renvoie un type int.
J'ai réecris mon programme en utilisant fscanf. Le programme la se compile mais lit que la première ligne!!#include<stdio.h> #include <stdlib.h> struct Client { int num; double x; //abscisse double y; //ordonnée }; struct Client k[25]; int main() { FILE *file = NULL; int i=0; if((file = fopen("D:\\donnees.txt", "r")) == NULL)/*ouverture du fichier en lecture*/ { printf("Error: impossible d'ouvrir fichier donnees.txt\n"); } else//non { while(fscanf(file, "%d % f %f\n", &k[i].num,&k[i].x,&k[i].x)== 25);//lecture de données types doubles fclose(file); } printf("%d%f%f\n",k[i].num, k[i].x,k[i].y); i++; getchar(); return 0; }Ca se compile mais j'obtiens ceci
Merci de vos indices. -
-
-
Bonjour,
while(fscanf(file, "%d % f %f\n", &k[i].num,&k[i].x,&k[i].x)== 25);//
Essaie plutôt : fscanf(file,"%d%f%f,&k[i].num,&k[i].x,&k[i].y);
Ensuite faut incrémenter i. Avant de reparcourir le fscanf.
Pourquoi ne pas utiliser des double ? Vaut mieux oublier les float sauf cas particulier.
Cdlt, -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
utilises les expressions regulières pour ne pas commetre d'erreurs lors de la lecture des lignes.
-
-
-
les regex sont indispensables à connaître à la longue en informatique, mais on ne peut pas affirmer que ce soit une priorité pour un débutant
je pense qu'il vaut même mieux qu'un débutant apprennent les choses en commençant par les processus les plus basiques, pour avoir une vraie base de compréhension de ce qui se passera quand il utilisera plus tard des outils qui mâchent le travail en occultant ce qui se passe en arrière-fond -
Mais l'informatique: ce n'est pas de l'a peu près mon chers. vaux mieux apprendre à sortir les grands moyens. au moin comme cela on á le choix.
J'ai jamais dit que c'était de l'approximatif. Mais, c'est juste que dans son cas les regexp sont complètement inutiles. C'est comme si tu parles d'inclure une bibliothèque BIGNUM pour réaliser une simple multiplication...
-