Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Autres questions


Index du Forum » Autres questions » lire un fichier texte avec Bfile de gint
Pedrobzh Hors ligne Membre Points: 616 Défis: 0 Message

lire un fichier texte avec Bfile de gint

Posté le 07/11/2020 15:33

bonjour, j'ai regardé la doc de Bfile (gint) mais il est marqué nulle part comment lire un fichier texte


1, 2 Suivante
Lephenixnoir Hors ligne Administrateur Points: 20809 Défis: 143 Message

Citer : Posté le 07/11/2020 15:41 | #


Tous les fichiers se lisent de la même façon, BFile_Read() charge les octets du fichier et ensuite c'est toi qui vois comment tu veux l'interpréter.
Pedrobzh Hors ligne Membre Points: 616 Défis: 0 Message

Citer : Posté le 07/11/2020 15:42 | #


on fais comment pour interpréter en texte?
pensés suicidaires
   90%
Filoji Hors ligne Maître du Puzzle Points: 348 Défis: 16 Message

Citer : Posté le 07/11/2020 15:44 | #


Grace à un dico octet -> char ? Voilà
Gloire au Flying Spaghetti Monster !!!
Pedrobzh Hors ligne Membre Points: 616 Défis: 0 Message

Citer : Posté le 07/11/2020 15:45 | #


ok...
pensés suicidaires
   90%
Lephenixnoir Hors ligne Administrateur Points: 20809 Défis: 143 Message

Citer : Posté le 07/11/2020 15:49 | #


Filoji a écrit :
Grace à un dico octet -> char ? Voilà

Hein ? Pardon ?

Non tu prends juste un char * sur les données. Tu crées ton gros buffer, char contenus_du_fichier[taille_du_fichier], puis tu fais BFile_Read() dessus.
Filoji Hors ligne Maître du Puzzle Points: 348 Défis: 16 Message

Citer : Posté le 07/11/2020 16:03 | #


Pardon
Ne m'écoutez pas
Gloire au Flying Spaghetti Monster !!!
Lephenixnoir Hors ligne Administrateur Points: 20809 Défis: 143 Message

Citer : Posté le 07/11/2020 16:04 | #


Euh désolé j'ai été un peu sec. J'ai vraiment en tête qu'il y a deux domaines qui échappent beaucoup aux débutants ici : la mémoire et la représentation des données. J'écrirai peut-être des tutoriels là-dessus...
Darkjura Hors ligne Membre Points: 320 Défis: 0 Message

Citer : Posté le 07/11/2020 19:24 | #


Je plussoie l'idée : je serais peut-être un peu moins largué après lecture...
Kbd2 Hors ligne Membre Points: 268 Défis: 0 Message

Citer : Posté le 07/11/2020 20:22 | #


Not surprising, lots of people move from languages like Python and JS or BASIC to C when they discover calc programming (me being one of them ).
Pedrobzh Hors ligne Membre Points: 616 Défis: 0 Message

Citer : Posté le 07/11/2020 20:36 | #


c'est comme ca?
const uint16_t *filename = "stf.txt";
BFile_Open(filename,BFile_ReadOnly);

pensés suicidaires
   90%
Lephenixnoir Hors ligne Administrateur Points: 20809 Défis: 143 Message

Citer : Posté le 07/11/2020 20:40 | #


Bon début ! Tu dois stocker la valeur de retour de BFile_Open(), généralement on l'appelle int fd. Tu en auras besoin pour toutes les autres fonctions !
Kbd2 Hors ligne Membre Points: 268 Défis: 0 Message

Citer : Posté le 07/11/2020 20:40 | #


The filename must have the storage memory identifier in the front - i.e. const uint16_t *filename = u"\\\\fls0\\stf.txt".

You should probably search for the file first to ensure it exists before trying to open it, the headers will show you how to use Bfile_FindFirst etc.

You need a descriptor when opening a file, it lets you keep track of the file hook e.g. int descriptor = BFile_Open(filename, BFile_ReadOnly).
Pedrobzh Hors ligne Membre Points: 616 Défis: 0 Message

Citer : Posté le 07/11/2020 21:33 | #


c'est quoi les arguments de Bfile_read() ?
pensés suicidaires
   90%
Lephenixnoir Hors ligne Administrateur Points: 20809 Défis: 143 Message

Citer : Posté le 07/11/2020 21:36 | #


Oubli que Yatis a mentionné sur la shoutbox : il faut un u devant la chaîne de caractères : u"\\\\fls0\\stf.txt", sinon tu obtiens un const char *, pas un const uint16_t *.

Regarde la doc pour les arguments de BFile_Read(), plus spécifiquement bfile.h.
Pedrobzh Hors ligne Membre Points: 616 Défis: 0 Message

Citer : Posté le 07/11/2020 21:54 | #


justement si je te demande c'est car j'ai pas compris
pensés suicidaires
   90%
Kbd2 Hors ligne Membre Points: 268 Défis: 0 Message

Citer : Posté le 07/11/2020 22:07 | #


BFile_Read(descriptor, (void *)buffer, <whatever the size of your file is>, 0) - the header is pretty self-explanatory.

Note: Make sure you've allocated at least the size of the file for the buffer or you will likely crash the calc.
Pedrobzh Hors ligne Membre Points: 616 Défis: 0 Message

Citer : Posté le 07/11/2020 22:09 | #


je sans pas ce que c'est le descriptor,le buffer et le 0
pensés suicidaires
   90%
Kbd2 Hors ligne Membre Points: 268 Défis: 0 Message

Citer : Posté le 07/11/2020 22:12 | #


I went over the descriptor in a previous comment.

The buffer is the thing you're reading the file into - e.g. char *buffer = malloc(file_size). This will contain the contents of the file after you call BFile_Read.

The 0 just tells BFile_Read you want to read from the zeroth byte (start of the file).
Pedrobzh Hors ligne Membre Points: 616 Défis: 0 Message

Citer : Posté le 07/11/2020 22:13 | #


ok
pensés suicidaires
   90%
Lephenixnoir Hors ligne Administrateur Points: 20809 Défis: 143 Message

Citer : Posté le 07/11/2020 22:14 | #


Pedrobzh a écrit :
justement si je te demande c'est car j'ai pas compris

Dans ce cas pose une question plus précise : « que veut dire cet argument » ou bien « comment je crée le buffer » par exemple.
1, 2 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2021 | Il y a 36 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd