Bonjour,
Je ne connais quasiment pas les entrées formatées voilà pourquoi je vous serais
reconnaissant de bien vouloir me dire si ce bout de code est correct voir e
utilisable, merci :
/* ---------------------------- */
#include <stdio.h>
int main(void)
{
char s[100] = "Paris %d Marseille %d";
int p, m;
scanf(s, &p, &m);
printf(s, p, m);
printf("n");
return 0;}
/* ---------------------------- */
la capture étant effectuée en console par exemple en entrant la cha îne
suivante :
Paris 5 Marseille 9
[Naturellement, et en violation de l'adage "never trust user input", je s uppose
que l'utilisateur entre la chaîne "correctement" ie les deux villes
orthographiées exactement comme dans le source sinon ça affiche des s cores non
conformes.]
L'affichage retourné est le suivant :
Paris 5 Marseille 9
Bonjour,
Je ne connais quasiment pas les entrées formatées voilà pourquoi je vous serais
reconnaissant de bien vouloir me dire si ce bout de code est correct voir e
utilisable, merci :
/* ---------------------------- */
#include <stdio.h>
int main(void)
{
char s[100] = "Paris %d Marseille %d";
int p, m;
scanf(s, &p, &m);
printf(s, p, m);
printf("n");
return 0;}
/* ---------------------------- */
la capture étant effectuée en console par exemple en entrant la cha îne
suivante :
Paris 5 Marseille 9
[Naturellement, et en violation de l'adage "never trust user input", je s uppose
que l'utilisateur entre la chaîne "correctement" ie les deux villes
orthographiées exactement comme dans le source sinon ça affiche des s cores non
conformes.]
L'affichage retourné est le suivant :
Paris 5 Marseille 9
Bonjour,
Je ne connais quasiment pas les entrées formatées voilà pourquoi je vous serais
reconnaissant de bien vouloir me dire si ce bout de code est correct voir e
utilisable, merci :
/* ---------------------------- */
#include <stdio.h>
int main(void)
{
char s[100] = "Paris %d Marseille %d";
int p, m;
scanf(s, &p, &m);
printf(s, p, m);
printf("n");
return 0;}
/* ---------------------------- */
la capture étant effectuée en console par exemple en entrant la cha îne
suivante :
Paris 5 Marseille 9
[Naturellement, et en violation de l'adage "never trust user input", je s uppose
que l'utilisateur entre la chaîne "correctement" ie les deux villes
orthographiées exactement comme dans le source sinon ça affiche des s cores non
conformes.]
L'affichage retourné est le suivant :
Paris 5 Marseille 9
Ca fonctionne et c'est correct,
mais je coderais ça comme ça :
#include <stdio.h>
int main(void)
{
#define FMT "Paris %d Marseille %d"
int p, m;
scanf(FMT, &p, &m);
printf(FMT"n", p, m);
return 0;
}
pour laisser une chance au compilateur de vérifier le codage...
Ceci dit, les contraintes de saisies imposées à l'utilisateur sont
telles que ce code est inutilisable dans la vrai vie...
de plus, il convient de vérifier la valeur retournée par scanf() avant
d'utiliser les valeurs saisies.
int n = scanf(FMT, &p, &m);
if (n == 2)
{
printf(FMT"n", p, m);
}
Ca fonctionne et c'est correct,
mais je coderais ça comme ça :
#include <stdio.h>
int main(void)
{
#define FMT "Paris %d Marseille %d"
int p, m;
scanf(FMT, &p, &m);
printf(FMT"n", p, m);
return 0;
}
pour laisser une chance au compilateur de vérifier le codage...
Ceci dit, les contraintes de saisies imposées à l'utilisateur sont
telles que ce code est inutilisable dans la vrai vie...
de plus, il convient de vérifier la valeur retournée par scanf() avant
d'utiliser les valeurs saisies.
int n = scanf(FMT, &p, &m);
if (n == 2)
{
printf(FMT"n", p, m);
}
Ca fonctionne et c'est correct,
mais je coderais ça comme ça :
#include <stdio.h>
int main(void)
{
#define FMT "Paris %d Marseille %d"
int p, m;
scanf(FMT, &p, &m);
printf(FMT"n", p, m);
return 0;
}
pour laisser une chance au compilateur de vérifier le codage...
Ceci dit, les contraintes de saisies imposées à l'utilisateur sont
telles que ce code est inutilisable dans la vrai vie...
de plus, il convient de vérifier la valeur retournée par scanf() avant
d'utiliser les valeurs saisies.
int n = scanf(FMT, &p, &m);
if (n == 2)
{
printf(FMT"n", p, m);
}
Je ne connais quasiment pas les entrées formatées voilà pourquoi je vous serais
reconnaissant de bien vouloir me dire si ce bout de code est correct voire
utilisable, merci :
/* ---------------------------- */
#include <stdio.h>
int main(void)
{
char s[100] = "Paris %d Marseille %d";
int p, m;
scanf(s, &p, &m);
printf(s, p, m);
printf("n");
return 0;
}
/* ---------------------------- */
la capture étant effectuée en console par exemple en entrant la chaîne
suivante :
Paris 5 Marseille 9
[Naturellement, et en violation de l'adage "never trust user input", je suppose
que l'utilisateur entre la chaîne "correctement" ie les deux villes
orthographiées exactement comme dans le source sinon ça affiche des scores non
conformes.]
L'affichage retourné est le suivant :
Paris 5 Marseille 9
Je ne connais quasiment pas les entrées formatées voilà pourquoi je vous serais
reconnaissant de bien vouloir me dire si ce bout de code est correct voire
utilisable, merci :
/* ---------------------------- */
#include <stdio.h>
int main(void)
{
char s[100] = "Paris %d Marseille %d";
int p, m;
scanf(s, &p, &m);
printf(s, p, m);
printf("n");
return 0;
}
/* ---------------------------- */
la capture étant effectuée en console par exemple en entrant la chaîne
suivante :
Paris 5 Marseille 9
[Naturellement, et en violation de l'adage "never trust user input", je suppose
que l'utilisateur entre la chaîne "correctement" ie les deux villes
orthographiées exactement comme dans le source sinon ça affiche des scores non
conformes.]
L'affichage retourné est le suivant :
Paris 5 Marseille 9
Je ne connais quasiment pas les entrées formatées voilà pourquoi je vous serais
reconnaissant de bien vouloir me dire si ce bout de code est correct voire
utilisable, merci :
/* ---------------------------- */
#include <stdio.h>
int main(void)
{
char s[100] = "Paris %d Marseille %d";
int p, m;
scanf(s, &p, &m);
printf(s, p, m);
printf("n");
return 0;
}
/* ---------------------------- */
la capture étant effectuée en console par exemple en entrant la chaîne
suivante :
Paris 5 Marseille 9
[Naturellement, et en violation de l'adage "never trust user input", je suppose
que l'utilisateur entre la chaîne "correctement" ie les deux villes
orthographiées exactement comme dans le source sinon ça affiche des scores non
conformes.]
L'affichage retourné est le suivant :
Paris 5 Marseille 9
Il est donc indispensable d'écrire pour le moins
if( 2!=scanf(s, &p, &m) )
Oui. Ce qui montre bien que scanf N'est PAS destinée à être utilisé pour
l'entrée console, mais bien pour relire des flux texte créés
antériorement avec printf.
Il est donc indispensable d'écrire pour le moins
if( 2!=scanf(s, &p, &m) )
Oui. Ce qui montre bien que scanf N'est PAS destinée à être utilisé pour
l'entrée console, mais bien pour relire des flux texte créés
antériorement avec printf.
Il est donc indispensable d'écrire pour le moins
if( 2!=scanf(s, &p, &m) )
Oui. Ce qui montre bien que scanf N'est PAS destinée à être utilisé pour
l'entrée console, mais bien pour relire des flux texte créés
antériorement avec printf.
Ceci dit, les contraintes de saisies imposées à l'utilisateur sont
telles que ce code est inutilisable dans la vrai vie...
Ceci dit, les contraintes de saisies imposées à l'utilisateur sont
telles que ce code est inutilisable dans la vrai vie...
Ceci dit, les contraintes de saisies imposées à l'utilisateur sont
telles que ce code est inutilisable dans la vrai vie...
D'une façon générale, je trouve que les sources d'apprentissage (au sens large y
compris les cours dans les facs ou ecoles) du langage C ne font pas un usage
assez limité et contrôlé des entrées.
L'apprentissage des entrées cause un grand
ralentissement dans l'apprentissage et si le but est d'apprendre le langage, on
peut s'en passer 99 cas sur 100.
En plus on les apprend sur l'entrée standard
("la console") ce qui est plein de pièges et de frustrations alors que tu
sembles nous dire que ce n'est pas le bon usage de scanf() ...
En outre, ces
mêmes sources d'apprentissage passent sous silence pour la plupart comment on
peut exploiter le retour de scanf() pour gérer de façon plus sûre les entrées.
D'une façon générale, je trouve que les sources d'apprentissage (au sens large y
compris les cours dans les facs ou ecoles) du langage C ne font pas un usage
assez limité et contrôlé des entrées.
L'apprentissage des entrées cause un grand
ralentissement dans l'apprentissage et si le but est d'apprendre le langage, on
peut s'en passer 99 cas sur 100.
En plus on les apprend sur l'entrée standard
("la console") ce qui est plein de pièges et de frustrations alors que tu
sembles nous dire que ce n'est pas le bon usage de scanf() ...
En outre, ces
mêmes sources d'apprentissage passent sous silence pour la plupart comment on
peut exploiter le retour de scanf() pour gérer de façon plus sûre les entrées.
D'une façon générale, je trouve que les sources d'apprentissage (au sens large y
compris les cours dans les facs ou ecoles) du langage C ne font pas un usage
assez limité et contrôlé des entrées.
L'apprentissage des entrées cause un grand
ralentissement dans l'apprentissage et si le but est d'apprendre le langage, on
peut s'en passer 99 cas sur 100.
En plus on les apprend sur l'entrée standard
("la console") ce qui est plein de pièges et de frustrations alors que tu
sembles nous dire que ce n'est pas le bon usage de scanf() ...
En outre, ces
mêmes sources d'apprentissage passent sous silence pour la plupart comment on
peut exploiter le retour de scanf() pour gérer de façon plus sûre les entrées.
scanf() est plein de pièges. Pour les frustations, je te laisse décider.
scanf() est un bon outil pour apprendre le langage, c'est quand même une
des manière les plus rapides de pouvoir donner des valeurs numériques
différentes à un programme pour voir comment il réagit.
scanf() est plein de pièges. Pour les frustations, je te laisse décider.
scanf() est un bon outil pour apprendre le langage, c'est quand même une
des manière les plus rapides de pouvoir donner des valeurs numériques
différentes à un programme pour voir comment il réagit.
scanf() est plein de pièges. Pour les frustations, je te laisse décider.
scanf() est un bon outil pour apprendre le langage, c'est quand même une
des manière les plus rapides de pouvoir donner des valeurs numériques
différentes à un programme pour voir comment il réagit.
Le 04/09/2009 10:08, candide écrivit :D'une façon générale, je trouve que les sources d'apprentissage (au sens large y
compris les cours dans les facs ou ecoles) du langage C ne font pas un usage
assez limité et contrôlé des entrées.
D'une façon générale, les cours d'apprentissage entrent progressivement
dans un sujet.
Par exemple, on n'apprend pas à prendre une épingle à
cheveux au frein à main lorsqu'on apprend à conduire.
Euh... il faut quand même des données pour qu'un programme informatique
serve à quoi que ce soit;
et elles sont souvent ailleurs que dans les
résultats créés par le programme. Donc il est nécessaire dans plus de
80% des cas de maîtriser les entrées.
scanf() est un bon outil pour apprendre le langage,
c'est quand même une
des manière les plus rapides de pouvoir donner des valeurs numériques
différentes à un programme pour voir comment il réagit.
Ce qui se passe, c'est que lorsque on progresse dans l'apprentissage du
langage, il faut probablement apprendre à se passer de scanf();
quite à
y revenir (beaucoup) plus tard, et apprendre alors les subtilités des
spécifications de format (genre %[).
Pour en revenir à la conduite, c'est (c'était?) la même chose avec les
créneaux : lorsque tu apprends, c'est une bonne façon de comprendre (un
peu) comment se comporte un véhicule à roues avant directrices lorsqu'il
est en marche arrière ;
plus tard, tu oublies cette technique qui ne
sert à rien... jusqu'au jour où tu es muté à Paris (ou tu t'achètes un
4×4 de 4,80 m, le résultat est le même, tu es obligé de devoir te garer
dans un espace à peine plus grand de 20 cm que ton véhicule) !
Parce qu'_au départ_, c'est un détail superfétatoire. Mais je pensais
que tu en étais à la troisième étape (si l'on suit le développement
ci-dessus), et là cela devient _indispensable_.
Pour ma parabole du créneau, l'équivalent serait de contrôler ce qui se
passe derrière le véhicule.
Pour le permis, lorsque tu le fais dans un
Z.I. déserte avec 200 m de libre, ce n'est pas un vrai souci. À Paris
avec le véhicule de ton conjoint, c'est un détail qui compte...
Le 04/09/2009 10:08, candide écrivit :
D'une façon générale, je trouve que les sources d'apprentissage (au sens large y
compris les cours dans les facs ou ecoles) du langage C ne font pas un usage
assez limité et contrôlé des entrées.
D'une façon générale, les cours d'apprentissage entrent progressivement
dans un sujet.
Par exemple, on n'apprend pas à prendre une épingle à
cheveux au frein à main lorsqu'on apprend à conduire.
Euh... il faut quand même des données pour qu'un programme informatique
serve à quoi que ce soit;
et elles sont souvent ailleurs que dans les
résultats créés par le programme. Donc il est nécessaire dans plus de
80% des cas de maîtriser les entrées.
scanf() est un bon outil pour apprendre le langage,
c'est quand même une
des manière les plus rapides de pouvoir donner des valeurs numériques
différentes à un programme pour voir comment il réagit.
Ce qui se passe, c'est que lorsque on progresse dans l'apprentissage du
langage, il faut probablement apprendre à se passer de scanf();
quite à
y revenir (beaucoup) plus tard, et apprendre alors les subtilités des
spécifications de format (genre %[).
Pour en revenir à la conduite, c'est (c'était?) la même chose avec les
créneaux : lorsque tu apprends, c'est une bonne façon de comprendre (un
peu) comment se comporte un véhicule à roues avant directrices lorsqu'il
est en marche arrière ;
plus tard, tu oublies cette technique qui ne
sert à rien... jusqu'au jour où tu es muté à Paris (ou tu t'achètes un
4×4 de 4,80 m, le résultat est le même, tu es obligé de devoir te garer
dans un espace à peine plus grand de 20 cm que ton véhicule) !
Parce qu'_au départ_, c'est un détail superfétatoire. Mais je pensais
que tu en étais à la troisième étape (si l'on suit le développement
ci-dessus), et là cela devient _indispensable_.
Pour ma parabole du créneau, l'équivalent serait de contrôler ce qui se
passe derrière le véhicule.
Pour le permis, lorsque tu le fais dans un
Z.I. déserte avec 200 m de libre, ce n'est pas un vrai souci. À Paris
avec le véhicule de ton conjoint, c'est un détail qui compte...
Le 04/09/2009 10:08, candide écrivit :D'une façon générale, je trouve que les sources d'apprentissage (au sens large y
compris les cours dans les facs ou ecoles) du langage C ne font pas un usage
assez limité et contrôlé des entrées.
D'une façon générale, les cours d'apprentissage entrent progressivement
dans un sujet.
Par exemple, on n'apprend pas à prendre une épingle à
cheveux au frein à main lorsqu'on apprend à conduire.
Euh... il faut quand même des données pour qu'un programme informatique
serve à quoi que ce soit;
et elles sont souvent ailleurs que dans les
résultats créés par le programme. Donc il est nécessaire dans plus de
80% des cas de maîtriser les entrées.
scanf() est un bon outil pour apprendre le langage,
c'est quand même une
des manière les plus rapides de pouvoir donner des valeurs numériques
différentes à un programme pour voir comment il réagit.
Ce qui se passe, c'est que lorsque on progresse dans l'apprentissage du
langage, il faut probablement apprendre à se passer de scanf();
quite à
y revenir (beaucoup) plus tard, et apprendre alors les subtilités des
spécifications de format (genre %[).
Pour en revenir à la conduite, c'est (c'était?) la même chose avec les
créneaux : lorsque tu apprends, c'est une bonne façon de comprendre (un
peu) comment se comporte un véhicule à roues avant directrices lorsqu'il
est en marche arrière ;
plus tard, tu oublies cette technique qui ne
sert à rien... jusqu'au jour où tu es muté à Paris (ou tu t'achètes un
4×4 de 4,80 m, le résultat est le même, tu es obligé de devoir te garer
dans un espace à peine plus grand de 20 cm que ton véhicule) !
Parce qu'_au départ_, c'est un détail superfétatoire. Mais je pensais
que tu en étais à la troisième étape (si l'on suit le développement
ci-dessus), et là cela devient _indispensable_.
Pour ma parabole du créneau, l'équivalent serait de contrôler ce qui se
passe derrière le véhicule.
Pour le permis, lorsque tu le fais dans un
Z.I. déserte avec 200 m de libre, ce n'est pas un vrai souci. À Paris
avec le véhicule de ton conjoint, c'est un détail qui compte...
Antoine Leca a écrit :
D'une façon générale, je trouve que les sources d'apprentissage
(au sens large y compris les cours dans les facs ou ecoles) du
langage C ne font pas un usage assez limité et contrôlé des entrées.
L'apprentissage des entrées cause un grand
ralentissement dans l'apprentissage et si le but est d'apprendre
le langage, on peut s'en passer 99 cas sur 100.
En plus on les apprend sur l'entrée standard
("la console") ce qui est plein de pièges et de frustrations alors que tu
sembles nous dire que ce n'est pas le bon usage de scanf() ...
Antoine Leca a écrit :
D'une façon générale, je trouve que les sources d'apprentissage
(au sens large y compris les cours dans les facs ou ecoles) du
langage C ne font pas un usage assez limité et contrôlé des entrées.
L'apprentissage des entrées cause un grand
ralentissement dans l'apprentissage et si le but est d'apprendre
le langage, on peut s'en passer 99 cas sur 100.
En plus on les apprend sur l'entrée standard
("la console") ce qui est plein de pièges et de frustrations alors que tu
sembles nous dire que ce n'est pas le bon usage de scanf() ...
Antoine Leca a écrit :
D'une façon générale, je trouve que les sources d'apprentissage
(au sens large y compris les cours dans les facs ou ecoles) du
langage C ne font pas un usage assez limité et contrôlé des entrées.
L'apprentissage des entrées cause un grand
ralentissement dans l'apprentissage et si le but est d'apprendre
le langage, on peut s'en passer 99 cas sur 100.
En plus on les apprend sur l'entrée standard
("la console") ce qui est plein de pièges et de frustrations alors que tu
sembles nous dire que ce n'est pas le bon usage de scanf() ...