Il faut penser comme si on devait le faire à la main et traduire en C
- j'attends de recevoir un < (pas fait)
- je lis une chaine jusqu'à la virgule (ce qui est fait)
- si je lis >, j'ai fini (on s'est arrêté trop tôt ou trop tard?)
Le problème est que la dernière valeur ne finit pas par virgule mais par > Du coup, on va ajouter le début de la trame suivante. On peut faire:
- j'attends de recevoir un < (pas fait)
- je lis une chaine jusqu'à la virgule ou supérieur (moins commode!) et je recommence tant que cela finit par virgule
Une solutions:
- j’attends un <
- je positionne pointeur à 0 (je vais écrire la chaine dans tableau[pointeur])
- je répète:
- je vide tableau[pointeur] en faisant ( tableau[pointeur] = "" )
- je lis un caractère
- si c'est un chiffre ou un point, je l'ajoute à tableau[pointeur]
- si c'est virgule, j'incrémente pointeur
jusqu'à lire un >
A réfléchir, si c'est des nombres pourquoi stocker dans un tableau de chaine et pas dans un tableau de nombre?
Pour rentrer un entier en lisant d'abord les poids forts:
répéter: nombre = nombre *10 + valeur_lue
Si c'est un float, on peut si on voit le point compter combien de chiffres suivent et diviser par 10ce_nombre:
- je répète:
- je vide tableau[pointeur] en faisant tableau[pointeur] = 0.0
- je met decimales à -1 (-1 c'est "je n'ai pas vu de point", N>0: il y a N chiffres après la virgule
- je lis un caractère
- si c'est un chiffre, je l'ajoute tableau[pointeur] = tableau[pointeur]*10 + chiffreLu
et si decimales >= 0 j'incrémente décimales
- si c'est un point je mets decilmales à 0
- si c'est virgule ou un >
- si decimales >0 tableau[pointeur] = tableau[pointeur]/10decimales
- j'incrémente pointeur
jusqu'à lire un >