Se connecter / S'enregistrer
Votre question

Plusieurs valeurs dans un scanf

Tags :
  • Programmation
Dernière réponse : dans Programmation
26 Février 2007 13:11:14

Bonjour,

j'aimerais savoir s'il était possible de traiter plusieurs valeurs entrées dans un scanf sans les assigner à un variable chacune.

Par exemple: si on souhaite demander à l'utilisateur 5 nombres maximum:

scanf("%d%d%d%d%d", &a, &z, &e, &r, &t);

peut-il être être plus simplement si l'on veut par exemple effectuer par la suite:

s = a + z;
r = s + e;
...

De même, ces additions peuvent-elles être simplifiées?

Merci à tous

Autres pages sur : plusieurs valeurs scanf

26 Février 2007 14:19:56

Citation :
j'aimerais savoir s'il était possible de traiter plusieurs valeurs entrées dans un scanf sans les assigner à un variable chacune.

non

La suite de ton post, je ne l'ai pas très bien saisie...désolé.
Anonyme
26 Février 2007 15:28:51

Les additions peuvent être simplifié par
r = a+z + e;
si s n'est plus utilisé par la suite, sinon non.
Contenus similaires
26 Février 2007 15:55:14

Oui mais en admettant que je demande 15 valeurs à l'utilisateur, je vais avoir un scanf extremement long et des additions extremement répétitives, non? :s
26 Février 2007 15:56:38

Dans ce cas, tu peux mettre ton scanf et tes additions dans une boucle while, peut-être ?
26 Février 2007 16:58:01

oui mais en faisant cela, l'utilisateur devra insérer les valeurs une à une. Hors je souhaiterais que l'utilisateur entre les valeurs sur la meme ligne de commande :s
26 Février 2007 16:59:14

et un getc ?
26 Février 2007 17:08:34

getc va afficher les char également non? Ce que je souhaiterais, c'est que le programme s'arrête après un nombre défini d'entiers ou lorsqu'une valeur non numérique est affichée :) 
26 Février 2007 17:29:22

Alors tu devrais faire
  1. char* ligne; // affecter un buffer suffisamment grand.
  2. scanf("%s", ligne);

puis créer dynamiquement un tableau en comptant les espaces (1 espace = 2 éléments), puis splitter la ligne par les espaces en réaffectant chaque élément splitté dans un élément du tableau.
(ça paraît compliqué, mais c'est simple en fait)

EDIT: ça fait longtemps que je n'ai pas fait de c/c++
27 Février 2007 10:48:54

Merci pour ta réponse, je vois maintenant comment procéder.

Cependant, comment puis-je entrer une suite d'entiers dans un vecteur puis les afficher ? Voici le bout de code qui (devrait) le faire :s :

const int ELEM = 6;
int tab[ELEM], i;

printf("Inser 6 numbers: \n");

for (i = 0; i < 6; i++)
scanf("%d", &tab);

printf("%d \n", tab);s

Cependant, il me renvoit ceci:

linux@jyon:~/Desktop$ ./rin
Inser 6 numbers:
23 R
-1077669568

Pourriez-vous m'éclairer? (je sais, ça a l'air bête, mais je débute en C :D )

EDIT: après avoir effectué plusieurs test, je me rends compte que le problème vient de printf("%d \n", tab); mais je ne vois pas comment le résoudre :s
27 Février 2007 15:23:14

for (i = 0; i < 6; i++)
{
scanf("%d", &tab);

printf("%d \n", tab);
}
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS