2017-05-03 4 views
3

Si je veux obtenir entrée 3 chiffres, je peux écrire du code comme ceci:comment obtenir plusieurs numéro d'une ligne en C?

scanf("%d %d %d", &a, &b, &c); 

mais comment puis-je obtenir dynamiquement le nombre d'entrées d'une ligne?

Par exemple, si l'utilisateur entre N (nombre), alors je dois me N entrées nombre entier d'une ligne comme ci-dessus.

L'entrée et la sortie doivent être:

how many do you want to enter: 5 
1 2 3 4 5 
sum: 15 
+1

déposés sur toute la ligne sous forme de chaîne, et analyser la chaîne, – OldProgrammer

+1

Lire une valeur à la fois dans une boucle jusqu'à ce que l'entrée est épuisée. –

+1

http://stackoverflow.com/questions/15291523/accepting-any-number-of-inputs-from-scanf-function – peter

Répondre

5

Depuis scanf renvoie la quantité de variables que vous avez rempli peut boucle jusqu'à ce que scanf n'a pas plus de valeur à lire ou le nombre est adapté:

int count = 0; 
printf("how many do you want to enter: "); 
scanf("%d", &count); 
int val = 0; 
int sum = 0; 
int i = 0; 
while(scanf("%d ", &val) == 1 && i++ < count) 
    sum += val; 
+0

Si j'entre 1 2 3 4 5, ces chiffres sont dans le tampon d'entrée standard. donc, scanf lit-il l'entrée de ce tampon bien que j'aie juste entré une ligne ?? C'est pourquoi ces instructions fonctionnent? – user7159879

-3

Comme quelqu'un l'a déjà dit, vous pouvez juste le lire comme une chaîne et séparer les valeurs lorsque vous voyez un espace. En c si vous avez un nombre tel que 5 qui est un personnage que vous pouvez transformer en un certain nombre en faisant ceci:

int foo = '5' - '0' //foo is now 5 

et pour plus d'un nombre de chiffres que vous pouvez faire une boucle à travers la chaîne et de trouver leur position et multiplier par 10 puis les ajouter tout

EDIT: aussi oublié de mentionner, mais vous pouvez utiliser atoi qui prend un char * et le convertit en un nombre

1

Comme vous ne connaissez pas la taille des entrées précédemment Il est préférable de créer un tableau dynamique en fonction de la taille d'entrée fournie par l'utilisateur. Entrez la taille du tableau et créez un tableau de cette taille. Ensuite, vous pouvez facilement parcourir le tableau et faire ce que vous voulez avec.

int count = 0, sum = 0; 
printf("how many do you want to enter: "); 
scanf("%d", &count); 

int *num = malloc(sizeof(int)*count); 

for(int i = 0; i < count; i++) { 
    scanf("%d ", &num[i]); 
    //sum += num[i]; 
}