Problème fonction fscanf

Résolu
CoDForlan Messages postés 54 Statut Membre -  
CoDForlan Messages postés 54 Statut Membre -
Bonjour,
je n'arrive pas à utiliser correctement la fonction fscanf

fichier en entré :

{"data":{"base":"BTC","currency":"USD","amount":"44241.65"}}


#include <stdlib.h>
#include <stdio.h>

//[RAPPEL DE COMPILATION](pour Mingw en C) : gcc main.c -o main.exe

float editBTCprice();

int main(int argc, char const *argv[]){

	float test = editBTCprice();
	printf("%.2f\n", test);

	return 0;
}

float editBTCprice(){
	float btcPrice = 1.;
	FILE* inputFile = NULL;
	inputFile = fopen("datasets/response.json", "r");

	if(inputFile != NULL){
		fscanf(inputFile,"%*[^:]%*[^:]%*[^:]%*[^:]%*%f%*", &btcPrice);
	}
	else{
		printf("Canno't open response.json");
	}
	fclose(inputFile);
	return btcPrice;
}



je voudrais que la fonction me renvoie le prix "amount" qui est ici de 44241.65 mais il me revoit 0.00
Merci pour vos réponse bonne soirée Genoce

1 réponse

  1. Dalfab Messages postés 638 Date d'inscription   Statut Membre Dernière intervention   102
     
    Le premier "%*[^:]" va sauter au moins 1 caractère et s'arrête au 1er ':'
    Le second débute sur le ':' donc ne lit que 0 caractère et l'analyse s'arrête. Il faut lire les ':'.
    De toute façons les "%*% ... " à la fin n'ont pas de sens.
    Si tu veux sauter les 4 ':' puis sauter le '"' pour lire un flottant, ça pourrait-être:
    fscanf( inputFile, "%*[^:]:%*[^:]:%*[^:]:%*[^:]:\"%f", &btcPrice);
    0
    1. CoDForlan Messages postés 54 Statut Membre 1
       
      mais comment tu as su parce que j'ai cherché la doc pour les flags du fscanf mais j'ai pas trouvé ?
      0
      1. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108 > CoDForlan Messages postés 54 Statut Membre
         
        Cette doc (par exemple) : https://www.cplusplus.com/reference/cstdio/fscanf/

        indique :

        [^characters] Negated scanset Any number of characters none of them specified as characters between the brackets.


        les caractères compris dans ce negated scanset ne sont donc pas consommés.
        0
      2. CoDForlan Messages postés 54 Statut Membre 1 > [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention  
         
        merci pour tes réponses ça fais plaisir ;)
        0