Comment faire une boucle dans un sscanf ?
geekat
Messages postés
228
Date d'inscription
Statut
Membre
Dernière intervention
-
geekat Messages postés 228 Date d'inscription Statut Membre Dernière intervention -
geekat Messages postés 228 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'aimerais optimiser l'écriture de mon code, le souci c'est que je réécris 4 fois une variable correspondant à 4 colonne de chaque ligne (à chaque incrémentation).
Maintenant, j'aimerais n'écrire qu'une seule fois cette variable en la mettant dans une boucle jusqu'à en avoir 4.
Je ne sais pas comment faire une boucle dans un sscanf.
Code non optimisé :
Code que j'ai essayé mais qui ne marche pas bien :
Pouvez-vous m'aider ?
Merci
J'aimerais optimiser l'écriture de mon code, le souci c'est que je réécris 4 fois une variable correspondant à 4 colonne de chaque ligne (à chaque incrémentation).
Maintenant, j'aimerais n'écrire qu'une seule fois cette variable en la mettant dans une boucle jusqu'à en avoir 4.
Je ne sais pas comment faire une boucle dans un sscanf.
Code non optimisé :
sscanf(chaine, "%lf ,%lf ,%lf ,%lf", &vect[i][0], &vect[i][1], &vect[i][2], &vect[i][3]); printf("Le vecteur de donnees x%d est : %f,%f,%f,%f \n",i, vect[i][0], vect[i][1], vect[i][2], vect[i][3]);
Code que j'ai essayé mais qui ne marche pas bien :
int j; for(j=0;j<=4;j++) { sscanf(chaine, "%lf", &vect[i][j]); printf("Le vecteur de donnees x%d est : %f \n",i, vect[i][j]); }
Pouvez-vous m'aider ?
Merci
A voir également:
- Comment faire une boucle dans un sscanf ?
- Boucle excel sans macro - Forum Excel
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Mise à disposition de boucle locale dédiée ✓ - Forum Freebox
- Vlc lire en boucle ✓ - Forum Lecteurs et supports vidéo
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
2 réponses
Salut geekat,
Peux-tu donner un exemple de ce qui figure dans "chaine" ?
Dans ton premier code, tu mets "%lf ,%lf ,%lf ,%lf", alors que dans le second, il n'y a pas d'espace suivi d'une virgule de consommés dans la lecture faite par sscanf.
Par ailleurs, si tu sais qu'il en a 4, je ne vois pas pourquoi le premier code ne serait pas "optimisé", surtout compte tenu de ce que tes caractères séparateurs, bien que bizarres (un espace suffit, non ?), sont pris en charge.
Si les valeurs n'étaient séparées que par un espace, le 2ème code fonctionnerait probablement.
Dal
Peux-tu donner un exemple de ce qui figure dans "chaine" ?
Dans ton premier code, tu mets "%lf ,%lf ,%lf ,%lf", alors que dans le second, il n'y a pas d'espace suivi d'une virgule de consommés dans la lecture faite par sscanf.
Par ailleurs, si tu sais qu'il en a 4, je ne vois pas pourquoi le premier code ne serait pas "optimisé", surtout compte tenu de ce que tes caractères séparateurs, bien que bizarres (un espace suffit, non ?), sont pris en charge.
Si les valeurs n'étaient séparées que par un espace, le 2ème code fonctionnerait probablement.
Dal
Bonjour,
Attention à la cohérence entre tes sscanf(). Comme dit [Dal], dans le premier tu as mis "%lf, %lf..." et dans le second, tu considères : "%lf %lf ...".
for(j=0;j<=4;j++)
Attention, tu as mis j==4 comme valeur max. Mais le dernier indice est 3...
Sinon, tu as utilisé la bonne méthode.
Qu'est-ce qui te fait dire que ça ne fonctionne pas ?
Cdlt,
Attention à la cohérence entre tes sscanf(). Comme dit [Dal], dans le premier tu as mis "%lf, %lf..." et dans le second, tu considères : "%lf %lf ...".
for(j=0;j<=4;j++)
Attention, tu as mis j==4 comme valeur max. Mais le dernier indice est 3...
Sinon, tu as utilisé la bonne méthode.
Qu'est-ce qui te fait dire que ça ne fonctionne pas ?
Cdlt,
Pas besoin d'espaces entre les %lf pour lire les variables.
C'est facultatif.
A+
hmm..., oui, mais comme il y a un espace suivi d'une virgule dans le masque il faut qu'il y ait une cohérence entre le masque et le contenu de la chaîne (c'est pourquoi je lui demande de confirmer quel est le contenu de la chaîne).
donne :
Dal