Problème fonction fscanf

Résolu
CoDForlan Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   -  
CoDForlan Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

1 réponse

Dalfab Messages postés 706 Date d'inscription   Statut Membre Dernière intervention   101
 
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
CoDForlan Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   1
 
mais comment tu as su parce que j'ai cherché la doc pour les flags du fscanf mais j'ai pas trouvé ?
0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105 > CoDForlan Messages postés 44 Date d'inscription   Statut Membre Dernière intervention  
 
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
CoDForlan Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   1 > [Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention  
 
merci pour tes réponses ça fais plaisir ;)
0