Rechercher : dans
Par :

Enregistrer un txt dans un tableau

Dernière réponse le 21 fév 2008 à 20:50:11 scolphi, le 21 fév 2008 à 10:21:49 
 Signaler ce message aux modérateurs

Bonjour,

J'ai un document .txt composé d'un nom d'une ville, sa latitude puis sa longitude (cela fait donc 3 colonnes séparées chacune par une tabulation).
J'ai en tout de nombreuses villes et à chaque nouvelle ville, il y a un saut de ligne.
Je programme en langage C avec dev C++.
J'aimerai que l'utilisateur rentre le nom d'une ville, que le programme cherche dans le fichier puis qu'il affiche le nom de la ville, sa latitude puis sa longitude.
Je suis bloqué dessus depuis longtemps donc j'espère que vous pourrez m'apporter un peu d'aide !
Merci d'avance

Configuration: Windows XP
Firefox 2.0.0.12

Meilleures réponses pour « Enregistrer un txt dans un tableau » dans :
Avast familial : renouveler / enregistrer sa clé de licence Voir1) Obtenir une nouvelle licence 2) Enregistrer sa nouvelle licence 1) Obtenir une nouvelle licence 1.1) Pour renouveler la clé de licence, se rendre sur le site d'Avast et remplir le formulaire d'inscription qui se trouve ICI. 1.2)...
Choisir son lecteur-enregistreur DVD VoirSupports DVD et standards vidéo : critères de choix La compatibilité avec les standards vidéo courants et les supports DVD sont les premiers critères de choix d’un lecteur-enregistreur DVD. Voici par ordre d’importance, une liste de points à...
[Audio] Enregistrer la radio sur internet VoirLe logiciel Radio Recorder permet l'enregistrement de musique diffusée sur les radios en ligne (sur Internet). Ce logiciel est capable de sauvegarder sur le disque dur les morceaux diffusés en streaming, et ce au format MP3 : Radio...
Robots.txt VoirPrésentation du fichier robots.txt Le fichier robots.txt est un fichier texte contenant des commandes à destination des robots d'indexation des moteurs de recherche afin de leur préciser les pages qui peuvent ou ne peuvent pas être indexées. Ainsi...
Tableau de bord VoirNotion de tableau de bord Un tableau de bord est une représentation graphique synthétique d'un ensemble d'indicateurs donnant à un responsable tous les éléments lui permettant de prendre visuellement et rapidement des décisions. Compte-tenu de sa...
Fichier TXT VoirFormat TXT Un fichier TXT est un fichier texte, c'est-à-dire un simple fichier contenant du texte au format ASCII. Pour ouvrir ou modifier un tel fichier, il suffit d'utiliser le bloc-notes ou un éditeur de texte traditionnel.

1

=[Cvrd]=Tassin, le 21 fév 2008 à 11:57:28

Bonjour,

Je regarde ça ;-)
-- Alex pour vous servir --

Répondre à =[Cvrd]=Tassin

2

scolphi, le 21 fév 2008 à 12:20:31

Ok !

Répondre à scolphi

3

=[Cvrd]=Tassin, le 21 fév 2008 à 14:17:07

Voici la solution :

#include <stdio.h>
#define TAILLE 32

int main(int argc, char *argv[])
{
FILE * entree;
char ligne[TAILLE];
int cpt = 0;
char *split;
char *nomVille = NULL;
char cChaine[TAILLE];
char cChaineFile[TAILLE];

printf("Donnez le nom du fichier à analyser : ");
fgets(cChaineFile, sizeof cChaineFile, stdin);

/*La chaine contient le retour chariot, il faut donc le supprimer*/
cChaineFile[strlen(cChaineFile)-1] = '\0';

entree = fopen(cChaineFile, "r");

if(entree == NULL){
printf("Le fichier spécifié n'existe pas\n");
return -1;
}

printf("Donnez le nom de la ville à rechercher : ");
fgets(cChaine, sizeof cChaine, stdin);

cChaine[strlen(cChaine)-1] = '\0';

while (fgets(ligne,TAILLE,entree) != NULL){
nomVille = strtok (ligne, "\t");
if( strcasecmp(cChaine, nomVille) == 0){
cpt++;
printf("Ville : %s\t", nomVille);
split = strtok(NULL, "\t");
printf("Latitude : %s\t", split);
split = strtok(NULL, "\t");
printf("Longitude : %s", split);
break;
}
}
if(cpt==0)
printf("La ville %s n'a pas été trouvée\n", cChaine);

system("PAUSE");
return 0;
}

N'hésite pas à poser des questions si tu ne comprends pas qq chose ;-) -- Alex pour vous servir --

Répondre à =[Cvrd]=Tassin

4

scolphi, le 21 fév 2008 à 16:05:05

Merci beaucoup. C'est sympa.
A quoi sert la ligne : split = strtok(NULL, "\t"); ?
Et strcasecmp ? C'est comme la fonction strcmp permettant de comparer deux chaines de caractères ?
Enfin, je ne connais pas encore les pointeurs et j'ai vu que tu en avait mis au début. Et donc j'aurai pas été capable d'utiliser split et nomVille.. :/

Répondre à scolphi

5

=[Cvrd]=Tassin, le 21 fév 2008 à 16:16:22

La fonction strtok permet de séparer une chaîne de caractères en lui précisant un délimiteur. Dans ton cas le délimiteur est \t qui est la tabulation. Nous mettons NULL comme premier paramètre car strtok a déjà en mémoire la chaîne "ligne" inutile donc de lui préciser une nouvelle fois.

La fonction strcasecmp est effectivement identique à la fonction strcmp à la différence près qu'elle ne tient pas compte de la casse. Si l'utilisateur passe une ville en minuscule et que les noms sont en majuscule dans ton fichier la comparaison se fera qd meme.

bonne continuation
-- Alex pour vous servir --

Répondre à =[Cvrd]=Tassin

6

scolphi, le 21 fév 2008 à 17:40:06
  • +1

Okok
Une derniere question : ne serait-il pas plus simple de tout mettre dans un fichier excel ?
Il y aurai alors juste à changer la ligne split = strtok(NULL, "\t"); en remplacant \t par ...heu..
Trop compliqué à ton avis ?

Répondre à scolphi

7

scolphi, le 21 fév 2008 à 17:51:44

Non laisse tomber.
Un dernier probleme cependant : si la ville comporte un espace ou un tiret, cela ne marche pas..
Comment faire ?

Répondre à scolphi

8

=[Cvrd]=Tassin, le 21 fév 2008 à 18:17:57

Bizarre car chez moi cela fonctionne bien : http://img253.imageshack.us/img253/6953/lecturefichierpz1.pn­g -- Alex pour vous servir --

Répondre à =[Cvrd]=Tassin

9

scolphi, le 21 fév 2008 à 20:42:37

Oui je suis dsl c'était pas les espaces mais les accents.
J'ai tout corrigé ça y est.
Merci !

Répondre à scolphi

10

 =[Cvrd]=Tassin, le 21 fév 2008 à 20:50:11

N'oublie pas de passer ton post en résolu ;-) -- Alex pour vous servir --

Répondre à =[Cvrd]=Tassin
Collection CommentÇaMarche.net