Je dois être en mesure de saisir plusieurs choses en utilisant la ligne de commande lorsque je lance mon programme en C. Je courrais le programme à l'aide d'une commande comme la ligne ci-dessous par exemple:Comment lire les arguments de la ligne de commande dans un double tableau/vecteur en C?
./programName 1 2.5 A.txt B.txt 0.0,0.5,1.0,1.5
alors je devrais idéalement les différentes entrées stockées dans des variables distinctes. J'ai du mal à stocker le dernier ensemble de nombres séparés par des virgules, les nombres 0.0.0.5,1.0,1.5, comme un vecteur appelé MyVector.
Voici un exemple de ce que j'ai essayé:
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char *argv[]){
int x = atoi(argv[1]); // x = 1
float y = atof(argv[2]); // y = 2.5
char *AFileName = argv[3]; // AFileName = A.txt
char *BFileName = argv[4]; // BFileName = B.txt
double MyVector[4] = atof(argv[5]); // MyVector = [0.0,0.5,1.0,1.5]
printf("x = %d\n",x);
printf("y= %f\n",y);
printf("AFileName= %s\n",HFileName);
printf("BFileName= %s\n",AFileName);
for(int i=0;i<4;i++)
{
printf("MyVector[%d] = %f\n",i,MyVector[i]);
}
}
Tous ces travaux, sauf pour la ligne où je tente de stocker les valeurs dans myVector.
Vous devez parcourir l'argument 'argv [5]' lorsque vous atteignez une virgule et appelez 'atof (...)' sur les caractères précédemment itérés. Rincez et répétez jusqu'à la fin de 'argv [5]'. –
Je recommanderais d'utiliser 'strtod()' au lieu de 'atof()' si vous voulez une vérification! En fait, avec 'strtod()', vous pouvez convertir au fur et à mesure (au lieu de trouver d'abord la virgule suivante), et profiter du pointeur 'end' qu'il fournit. –