Enregistrer un txt dans un tableau
Résolu/Fermé
scolphi
Messages postés
36
Date d'inscription
mercredi 25 avril 2007
Statut
Membre
Dernière intervention
18 mai 2008
-
21 févr. 2008 à 10:21
Utilisateur anonyme - 21 févr. 2008 à 20:50
Utilisateur anonyme - 21 févr. 2008 à 20:50
A voir également:
- Enregistrer un txt dans un tableau
- Tableau croisé dynamique - Guide
- Audacity enregistrer son pc - Guide
- Comment faire un tableau - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
10 réponses
scolphi
Messages postés
36
Date d'inscription
mercredi 25 avril 2007
Statut
Membre
Dernière intervention
18 mai 2008
2
21 févr. 2008 à 17:40
21 févr. 2008 à 17:40
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 ?
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 ?
scolphi
Messages postés
36
Date d'inscription
mercredi 25 avril 2007
Statut
Membre
Dernière intervention
18 mai 2008
2
21 févr. 2008 à 12:20
21 févr. 2008 à 12:20
ok !
Utilisateur anonyme
21 févr. 2008 à 14:17
21 févr. 2008 à 14:17
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 ;-)
#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 ;-)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
scolphi
Messages postés
36
Date d'inscription
mercredi 25 avril 2007
Statut
Membre
Dernière intervention
18 mai 2008
2
21 févr. 2008 à 16:05
21 févr. 2008 à 16: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.. :/
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.. :/
Utilisateur anonyme
21 févr. 2008 à 16:16
21 févr. 2008 à 16:16
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
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
scolphi
Messages postés
36
Date d'inscription
mercredi 25 avril 2007
Statut
Membre
Dernière intervention
18 mai 2008
2
21 févr. 2008 à 17:51
21 févr. 2008 à 17:51
non laisse tomber.
Un dernier probleme cependant : si la ville comporte un espace ou un tiret, cela ne marche pas..
Comment faire ?
Un dernier probleme cependant : si la ville comporte un espace ou un tiret, cela ne marche pas..
Comment faire ?
Utilisateur anonyme
21 févr. 2008 à 18:17
21 févr. 2008 à 18:17
Bizarre car chez moi cela fonctionne bien : http://img253.imageshack.us/img253/6953/lecturefichierpz1.png
scolphi
Messages postés
36
Date d'inscription
mercredi 25 avril 2007
Statut
Membre
Dernière intervention
18 mai 2008
2
21 févr. 2008 à 20:42
21 févr. 2008 à 20:42
Oui je suis dsl c'était pas les espaces mais les accents.
J'ai tout corrigé ça y est.
Merci !
J'ai tout corrigé ça y est.
Merci !