Problème fonction fscanf
Résolu
CoDForlan
Messages postés
54
Statut
Membre
-
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é :
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
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:
- Problème fonction fscanf
- Fonction si et - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Fonction remplacer sur word - Guide
- Fonction somme excel - Guide
1 réponse
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:
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);
indique :
les caractères compris dans ce negated scanset ne sont donc pas consommés.