Lire un fichier texte [C] - C++ - Programmation
Marsh Posté le 27-04-2003 à 00:24:16
je connais pas vraiment les char*...
mon fichier texte ressemble a ca :
Départ Arrivée
X Y X Y
0 7 0 8
1 9,26 1 9
3 10 4 10
3 9 5,67 9
3,21 7 6 7
0,36 6 5 5,02
3 3 1 3
3 2 0 2
3 0 0 0
3 0 6 0
Et il faut que mon programme puisse lire les coordonnées x et y.
Voila.
Marsh Posté le 27-04-2003 à 01:23:19
tu fait
Code :
|
bon fo encore que tu sache comment ouvrir un fichier
Marsh Posté le 27-04-2003 à 03:30:18
Surtout qu'il y a des valeurs du style 0,36 dans le tableau en question
remplace deja par double pour la declaration (sans oublier de les transformer en tableau de double en fait)
Pour lire le fichier => RTFM ou STFW
Et pis pareil pour le fscanf.
Marsh Posté le 27-04-2003 à 10:35:57
red faction>
il me semble que ca n arrive pas a passer le texte du debut du fichier
Citation : |
Marsh Posté le 27-04-2003 à 11:04:22
red faction a écrit :
|
Marsh Posté le 27-04-2003 à 11:32:40
eventuellement a passer les lignes de texte ???
mais il manque des arguments non ?
et c koi %s g jamais vu
Marsh Posté le 27-04-2003 à 12:10:09
titan91 a écrit : eventuellement a passer les lignes de texte ??? |
c pas standard, mais bon j'avais la flemme de faire du code propre
le 1er sert a passer la 1ere ligne de texte.
Marsh Posté le 27-04-2003 à 12:13:24
%s = string
c'est pour prendre un chaine de caractere, en fait le %s prend
du debut jusqu'au prochain espace je crois...
Marsh Posté le 27-04-2003 à 12:13:59
et t'as pas plus compliqué comme truc?
spourtant pas compliqué. soit on fait un fgets, soit des getchar jusqu'à un '\n', etc. Pas besoin de scanf
Marsh Posté le 27-04-2003 à 13:12:23
Moi je pense pluto faire ca avec un fscanf().
Ms je comprend pas trop comment passer a la ligne...
c ca : "\n" qui me permet de passer a la ligne ??
Pke ca a pas l air de marcher
Marsh Posté le 27-04-2003 à 13:55:23
oui \n permet de changer de ligne...
fais un watch pour voir si il scanne bien les 4 valeurs de ta ligne déjà...
Marsh Posté le 27-04-2003 à 14:29:53
pour les vleurs c bon ca les scan bien
mais fo passer les ligens de texte c le seul pb...
Marsh Posté le 27-04-2003 à 14:41:23
ReplyMarsh Posté le 27-04-2003 à 15:00:18
Tom18 a écrit : %s = string |
Moi g l impression qu il a du mal avec les %s pke qd j execute le truc il me fait une erreur et ma fenetre dos bhe pof elle disaprait..
Marsh Posté le 27-04-2003 à 15:12:58
ReplyMarsh Posté le 27-04-2003 à 15:17:46
Vas y, explique moi la différence qu'il y a entre un char* et un tableau. ( je pense qu'on a mal du se comprendre )
Il me semble qu'un char* n'est autre qu'un pointeur vers un char (ou un tableau de char dans ce cas précis)
Marsh Posté le 27-04-2003 à 15:35:10
Ace17 a écrit : Vas y, explique moi la différence qu'il y a entre un char* et un tableau. ( je pense qu'on a mal du se comprendre ) |
ton tableau a une taille fixe (a part en C99 je crois).
un char* est virtuellement infinie (a coup de malloc/realloc).
Marsh Posté le 27-04-2003 à 16:25:05
ToxicAvenger a écrit : |
Oui mais tu peux tout à fait adresser un tableau à taille fixe avec un char*... en fait tu compares deux trucs pas comparables. Un tableau est une zone de mémoire; un char* c'est juste un type de données, qui sert très souvent à adresser un tableau.
Marsh Posté le 27-04-2003 à 16:30:18
Ace17 a écrit : |
le char* pointe sur le 1er octet d'une zone mémoire.
Et perso, je prefere utiliser des char*, c'est plus souple.
Marsh Posté le 27-04-2003 à 16:50:05
ToxicAvenger a écrit : |
et perso, moi je met des int partout, par exemple :
Code :
|
et j'attends vivement le 64 bits.
Marsh Posté le 27-04-2003 à 17:06:00
tabasc0 a écrit : |
le %s tu le stockais dans quoi ? un char* ?
[edit] fautes d'orthographes...
Marsh Posté le 27-04-2003 à 20:37:53
Konar a écrit :
|
de toutes facons, en C, un char est un int.
Marsh Posté le 27-04-2003 à 20:40:33
ToxicAvenger a écrit : |
Marsh Posté le 27-04-2003 à 20:49:05
ben vi... si tu sais pas ca, tu ne sais rien du C alors...
Marsh Posté le 27-04-2003 à 20:49:06
oui, c'est le plus petit int
la norme veut
sizeof(char)<=sizeof(short int)<=sizeof(int)<=sizeof(long int)<=sizeof(long long int)
Marsh Posté le 27-04-2003 à 20:50:18
++Taz a écrit : oui, c'est le plus petit int |
la norme veut également que sizeof(char) == 1
Marsh Posté le 27-04-2003 à 20:52:34
ToxicAvenger a écrit : |
Ca ne me surprendrait pas.
Enfin moi je pensais que char était sur 8 bits, et int sur 16 ou 32 (dépendant des platformes), mais bon...
Marsh Posté le 27-04-2003 à 21:06:07
et un char compte exactement CHAR_BIT bits
voir votre <limits.h> pour plus de precisions
Marsh Posté le 30-04-2003 à 19:41:36
j ai un probleme avec le %s.
On m a dit qu il etait censé prendre toute une chaine de caractere mais qd je l utilise il ne prend qu un seul caractere seulement.
Code :
|
ca c mon code
et ca c mon texte que je fscanf :
Depart Arrivee
X1 Y2 X1 Y2
0 7 0 8
1 9,26 1 9
3 10 4 10
3 9 5,67 9
3,21 7 6 7
0,36 6 5 5,02
3 3 1 3
3 2 0 2
3 0 0 0
3 0 6 0
et ds ma console il m ecrit : D e p
moi je voudrais plutot qu il m ecrive depart arrivee X1
Marsh Posté le 01-05-2003 à 02:26:51
Tu as effectivement un probleme: celui d'ecrire %c a la place de %s
%c ne va te prendre qu'un seul et unique caractere, meme s'il s'agit d'une chaine.
Marsh Posté le 01-05-2003 à 03:12:06
merde excuse moi je me suis trompé c bien des %s que g marqué.
Donc c pas ca le probleme.
Sur ce coup la g un pou fait le boulet
Marsh Posté le 01-05-2003 à 04:43:50
Essayes avec fscanf ("%s%s\n%s%s%s%s\n", ...)
Je trouve ce code laid mais bon, puisqu'on est dans cette veine.
fscanf, c'est tres pratique pour recuperer des donnees bien formatees, comme les nombres que tu as ensuite.
Mais ce serait moi je virerais direct les 2 premieres lignes (comme on te l'as deja dit avec l'aide d'un fgets par exemple) et apres j'utiliserais le fscanf.
Marsh Posté le 01-05-2003 à 04:44:35
tabasc0 a écrit : merde excuse moi je me suis trompé c bien des %s que g marqué. |
poste tout ton code, y aura surement plein de trucs a revoir...
Marsh Posté le 01-05-2003 à 05:16:47
bravo pour ton fichier texte a la con, j'ai bien perdu 30 min a m'apercevoir que c'etait la faute aux caracteres ',' alors que pour le scanf pour lire des float c'est mieux d'avoir le caractere '.' entre les décimaux (personne s'en est rendu compte aussi...)
Code :
|
voila, je peux aller me pieuter content d'avoir fait du c-unix.
Marsh Posté le 26-04-2003 à 18:06:58
Comment fait on pour lire un fichier texte et enregister ses donnés dans un tableau ?
Je sais lire les caracteres 1 par 1 ms je ne sais pas trop comment passer a la ligne.
Par exemple pour lire un tableau , j aimerais passer a la deuxieme ligne du tableau...
Si k1k1 pouvait m aider svp, je suis débutant..