2017-10-21 84 views
0

Pourquoi ne puis-je lire la deuxième valeur de la ligne de commande en utilisant ce code, je suis en utilisant VS 2017 et ont 4 + 3 dans les arguments de commandevaleurs de lecture à partir des arguments de commande en C

#include <stdio.h> 

int main(int argc, char *argv[]) 
{ 
float numberOne; 
float numberTwo; 
float theResult; 

if (argc == 2) 
{ 
    sscanf(argv[1], "%f", &numberOne); 
    sscanf(argv[2], "%f", &numberTwo); 
    printf("%f \n", numberOne + numberTwo); 

} 
else 
{ 
    printf("invalid input"); 
} 

sleep(10); 
return(0); 

} 
+1

Tout d'abord, si 'argc == 2' les indices valides sont' [0] 'et' [1] ', la valeur 2 dit combien il y a , pas l'indice le plus élevé. Et si vous entrez '4 + 3', sans espaces, je m'attendrais à tout cela dans' argv [1] '. –

+1

Étant donné le format d'entrée, vous utilisez une chaîne de format inappropriée. Vous devriez également vérifier la valeur renvoyée par 'sscanf()'. –

Répondre

1

Vous passerais arguments 4 3 (no '+' caractère compris entre 3 et 4). argc est le nombre d'arguments de ligne de commande transmis. Par défaut, le premier argument est toujours le nom du programme. Ainsi, la valeur de argc sera 3.

if (argc == 3) 
{ 
    sscanf(argv[1], "%f", &numberOne); 
    sscanf(argv[2], "%f", &numberTwo); 
    printf("%f \n", numberOne + numberTwo); 
} 
+0

malheureusement ce code est en cours de test en utilisant les entrées 2 + 4 15 + 17 + 1,395 2,890 1,562 + 0 + 2,391 a a + 2,695 – Squidly

+2

@Squidly dans ce cas, il aura pour rôle de ratent le test. Vous devrez refaire. –

+0

mon professeur uni a une sorte de bot qui marque notre code une fois soumis en ligne, il introduit des valeurs en utilisant le + donc je me trompe. – Squidly