OVH Cloud OVH Cloud

Problème C++

106 réponses
Avatar
Steph
boujour

J'ai créé un programme dont voici une partie :


#include <iostream>
using namespace std;

int main (void)

{
char pw[20];
const char valide[20]="12H12";

cout << " Password :";
cin >> pw;

while (strcmp(pw,valide) = =1)

{

cout << " ACCESS REFUSED\n ";
cout << " Password :";
cin >> pw;

}


cout << "\n ACCESS GARANTED ";
}

Le problème est que si j'entre seulement le premiere lettre ou chiffre il
accepte alors que celles qui suivent sont fausses. Comment je peux faire
pour que le programme teste un à un les caratères?

merci

10 réponses

7 8 9 10 11
Avatar
Sylvain
Jean-Marc Bourguet wrote on 26/06/2006 09:43:
Sylvain writes:

le fait que l'ISO C++ ait spécifié TRES récemment _flushall() n'implique
pas que le monde n'existait pas avant.


Je me demandais si ca m'avait echappe. Je ne vois pas la moindre
mention de _flushall (ni de flushall d'ailleurs) dans N2009. C'est
quoi ta reference?


c'est pas le monde unix et c'est pas la dernière révision de la norme
(toute norme ayant parfois tendance à renier son passé...).

http://msdn2.microsoft.com/en-us/library/ms235367.aspx
(qui me laissa penser que cette fonction était POSIX)

http://www.lfbs.rwth-aachen.de/~stefan/qnx/src/flushall.html
(watcom)


http://kom.aau.dk/~kjh/partran/noisecom/mexsamlet/stdio.h
(borland)

Sylvain.


Avatar
Jean-Marc Bourguet
Sylvain writes:

Jean-Marc Bourguet wrote on 26/06/2006 09:43:
Sylvain writes:

le fait que l'ISO C++ ait spécifié TRES récemment _flushall() n'implique
pas que le monde n'existait pas avant.
Je me demandais si ca m'avait echappe. Je ne vois pas la moindre

mention de _flushall (ni de flushall d'ailleurs) dans N2009. C'est
quoi ta reference?


c'est pas le monde unix et c'est pas la dernière révision
de la norme (toute norme ayant parfois tendance à renier
son passé...).


N2009 ce n'est pas unix, ce n'est pas la dernière révision
publiée de la norme C++, c'est le dernier document de
travail consolidant ce qui est déjà accepté pour la
prochaine.

D'après mon expérience, les normes ont très rarement
tendance à renier leur passé. Elles sont plutôt sujette à
le conserver à tout prix.

http://msdn2.microsoft.com/en-us/library/ms235367.aspx
(qui me laissa penser que cette fonction était POSIX)


"This POSIX function is deprecated beginning in Visual C++
2005."

C'est une erreur factuelle (flushall n'a jamais fait partie
de POSIX).

"Use the ISO C++ conformant _flushall instead."

Ce n'est pas à interpréter comme "_flushall est défini dans
le C++ ISO", mais comme "nous définissons _flushall et
l'utilisation de ce nom est une extention conforme de ISO
C++".

En gros les noms commençant par _ et ceux contenant deux __
sont réservés à l'implémentation pour ce qu'elle veut, entre
autres des extensions. D'après ce que j'ai compris, MS
s'est mis récemment à déprécier (toutes?) ses extensions qui
n'avaient pas de tels noms.

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org



Avatar
Loïc Joly
kanze wrote on 26/06/2006 11:18:


A priori, quand on parle de « flush »
ici (un group C++), c'est bien de std::ostream::flush qu'on
parle, parce que c'est la seule fonction flush en C++.



ah, quand on "parle", c'est obligeatoirement pour réciter ISO 9899 ?!?


Non, mais quand on dit qu'une fonction existe, sans préciser rien
d'autre, ça sous entends en général qu'elle existe dans le langage, et
non pas dans une implémentation particulière.


désolé mais moi je flushe (tu flushes, il flushe) en tant que
traitement, s'il faut un accès DMA, une int. ou une API propriétaire
supportée par 100% des compilos que j'utilise cela me va très bien.


Et grand bien t'en fasse. J'utilise moi aussi en permanence des tas de
fonctions qui ne font pas partie du langage. Par contre, j'ai une bonne
vision que ce qui en fait partie ou non, afin d'adapter mon programme à
d'éventuelles contraintes de portabilité, et dans un newsgroup, où l'on
ne connait pas l'environnement des gens qui vont lire le message, il
faut aussi prendre ses précautions.


tu trouves des fonctions qui ne sont pas dans ma copie de la norme



oui et alors, c'est interdit par la même norme ?


Non, tant que ces fonctions respctent certaines règles de nommage. Ce
qui es tplus dommage, c'est de croire à tord qu'une fonction y est. Ca
risque de jouer des tours lors d'un portage. Pour info, tous les noms
commençant par _ sont des extentions spécifiques à un compilateur. Et
comme les compilateurs commencent bien respecter cette règle, autant en
profiter.


--
Loïc


Avatar
Loïc Joly

http://msdn2.microsoft.com/en-us/library/ms235367.aspx
(qui me laissa penser que cette fonction était POSIX)


Extrait de la page :
flushall

This POSIX function is deprecated beginning in Visual C++ 2005. Use the
ISO C++ conformant _flushall instead.

Contrairement à ce qu'on pourrait croire, cette documentation n'indique
pas qu'une fonction _flushall existe en ISO C++, mais juste que la
fonction propriétaire a été renommée afin de respecter les conventions
de nommage ISO pour les extentions d'un compilateur.

--
Loïc

Avatar
Sylvain
Jean-Marc Bourguet wrote on 26/06/2006 22:20:

En gros les noms commençant par _ et ceux contenant deux __
sont réservés à l'implémentation pour ce qu'elle veut, entre
autres des extensions. D'après ce que j'ai compris, MS
s'est mis récemment à déprécier (toutes?) ses extensions qui
n'avaient pas de tels noms.


tout à fait (initié avec VS2003, systématique avec 2005, pour ce que
j'ai parcouru).

Sylvain.

Avatar
Sylvain
Loïc Joly wrote on 26/06/2006 22:39:

Et grand bien t'en fasse. J'utilise moi aussi en permanence des tas de
fonctions qui ne font pas partie du langage. Par contre, j'ai une bonne
vision que ce qui en fait partie ou non, afin d'adapter mon programme à
d'éventuelles contraintes de portabilité, et dans un newsgroup, où l'on
ne connait pas l'environnement des gens qui vont lire le message, il
faut aussi prendre ses précautions.


j'exigerais et m'efforcerais à ce type de précautions s'il s'agissait
d'encourager à l'usage d'une telle fonction.

le point partait de "je mets plutot un flush avant chaque nouvel input".
un développeur normal trouve spontanément 10 façons différentes de le
faire; mes chers interlocuteurs ne trouve qu'à noter que "depuis quand
que cela serait possible" et autre agressions.

oui et alors, c'est interdit par la même norme ?


Non, tant que ces fonctions respctent certaines règles de nommage. Ce
qui es tplus dommage, c'est de croire à tord qu'une fonction y est. Ca
risque de jouer des tours lors d'un portage. Pour info, tous les noms
commençant par _ sont des extentions spécifiques à un compilateur. Et
comme les compilateurs commencent bien respecter cette règle, autant en
profiter.


il est toujours facile d'écrire l'histoire à posteriori, la déprécation
officielle par MS date au mieux de Janv. 2006 (date du dernier MSDN Lib
complêt), les fonctions ne comportaient pas (systématiquement) de "_"
avant que la norme ne le définisse (quand d'ailleurs?).

Sylvain.


Avatar
Jean-Marc Bourguet
Sylvain writes:

il est toujours facile d'écrire l'histoire à posteriori,
la déprécation officielle par MS date au mieux de
Janv. 2006 (date du dernier MSDN Lib complêt), les
fonctions ne comportaient pas (systématiquement) de "_"
avant que la norme ne le définisse (quand d'ailleurs?).


La norme C réserve les noms commençant par un underscore
pour l'implémentation depuis sa première publication, en
1989 par l'ANSI.

La norme C++ le fait également depuis sa première
publication, en 1998 par l'ISO. A nouveau, la pratique est
antérieure.

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Avatar
Sylvain
kanze wrote on 26/06/2006 10:57:

Ça ne serait pas plutôt que tu ne sais pas chercher ? Parce que


hmm, hmm, ben ça doit être ça ... remarque, j'ai pas cherché pour
trouver non plus, juste une curiosité qui ne dépasse pas les 2 mn.

[...] et j'ai un numéro TVA intercommunitaire
, et un numéro Siret, et que sais-je d'autre.)


un SIREN, un code RCS et un code APE, à tout le moins.

"utiliser" n'est pas détenir, gabi-soft.fr est disponible pour
n'importe qui à 6,50 euro depuis une semaine; donnes-toi
l'occassion de couvrir à posteriori tes affirmations.


Depuis une semaine ?


pour-n'importe-qui-depuis-une-semaine (!)

http://www.afnic.fr/actu/nouvelles/juridique/CP20060615

J'aurais dû dire qu'il m'appartenait. (Mais la gestion des noms
a tellement changé dernièrement que je ne sais pas où j'en suis.


l'AFNIC n'est pas très transparent, soit.

[...] Et que si je voulais utiliser un nom autre
que celui qu'il m'ont donné, il faudrait que je paie, or que ce
n'était jamais le cas avant.


confus tout ça, la connection à l'internet via un provider ADSL (ou
autre), la réservation de nom de domaine et l'hébergement de site (et/ou
de serveur mails) sont 3 choses distinctes.

Mes clients s'herbergent eux-même, pour la plupart. Mais j'avoue
qu'ils ne sont pas n'importe qui : Crédit Agricole,


tu fais aussi du Cobol ?? l'informatique (de gestion) du CA me parait
une des plus poussives (non, je ne l'ai pas audité, c'est gratuit).

Sylvain.


Avatar
kanze
Sylvain wrote:
kanze wrote on 26/06/2006 10:57:

Ça ne serait pas plutôt que tu ne sais pas chercher ? Parce
que


hmm, hmm, ben ça doit être ça ... remarque, j'ai pas cherché pour
trouver non plus, juste une curiosité qui ne dépasse pas les 2 mn.

[...] et j'ai un numéro TVA intercommunitaire
, et un numéro Siret, et que sais-je d'autre.)


un SIREN, un code RCS et un code APE, à tout le moins.


Sans doute. La papérasserie n'a jamais été mon fort. J'ai
démandé au conseilleur juridique ce qu'il fallait faire ; il
m'a donné l'adresse d'un bureau à Versaille où il fallait
m'inscrire, et il m'ont donné un tas de numéros. Il y en a un
qu'on m'a dit doit apparaître dans l'en-tête de ma
correspondance (numéro SIREN, je crois), et il me faut le numéro
de TVA intercommunitaire quand je facture à l'étranger, mais
pour la reste -- j'ai le papier d'inscription quelque part, et
quand on me demande un numéro, je le cherche. Sinon, je n'y
pense pas.

"utiliser" n'est pas détenir, gabi-soft.fr est disponible
pour n'importe qui à 6,50 euro depuis une semaine;
donnes-toi l'occassion de couvrir à posteriori tes
affirmations.


Depuis une semaine ?


pour-n'importe-qui-depuis-une-semaine (!)

http://www.afnic.fr/actu/nouvelles/juridique/CP20060615

J'aurais dû dire qu'il m'appartenait. (Mais la gestion des
noms a tellement changé dernièrement que je ne sais pas où
j'en suis.


l'AFNIC n'est pas très transparent, soit.


J'avoue que j'ai commencé sur l'internet à une époque où tout
était plus simple (du fait qu'il n'y avait que des gens
avertis). À l'époque, j'avais un Sàrl ; j'ai donc démandé et
reçu le nom gabi-soft.fr en son nom. J'avais aussi une adresse
IP classe C -- 256 adresses fixes. Le tout gratuitement.

Depuis, chaque fois que j'ai changé de forme juridique ou de
fournisseur, c'était devenu plus compliqué. Au point qu'au
dernier changement de fournisseur, j'ai simplement pris le nom
qu'il me proposait (kanze.james.neuf.fr), sans me cassait la
tête. La paperasserie m'a vaincu.

[...] Et que si je voulais utiliser un nom autre
que celui qu'il m'ont donné, il faudrait que je paie, or que ce
n'était jamais le cas avant.


confus tout ça, la connection à l'internet via un provider
ADSL (ou autre), la réservation de nom de domaine et
l'hébergement de site (et/ou de serveur mails) sont 3 choses
distinctes.


Apparamment, aujourd'hui. À vrai dire, au point où on est, mon
fils s'y connaît mieux que moi. Dans la passée, j'avais un
fournisseur, une adresse IP (ou avant, un bloc d'adresses IP),
un nom de domaine (que j'avais acquis au depart directement de
l'organisme qui a précédé AFNIC), et je faisait comme je
voulais. Mon serveur d'email, par exemple, tournait sur une
machine chez moi.

Mes clients s'herbergent eux-même, pour la plupart. Mais
j'avoue qu'ils ne sont pas n'importe qui : Crédit Agricole,


tu fais aussi du Cobol ?? l'informatique (de gestion) du CA me
parait une des plus poussives (non, je ne l'ai pas audité,
c'est gratuit).


Je travaille en fait dans une filiale, CaLyon Cheuvreux, sur les
logiciels de marché. Où il n'y a pas de Cobol. J'ai failli faire
du Cobol quand j'étais à la Dresdner Bank, en revanche ; la
côté hôte était en Cobol, sur IBM 390. J'ai assisté un premier
jour au cours de l'environemment mainframe ; une fois que j'ai
vue comment fonctionnait leur équivalent d'un shell, je me suis
dit que ce n'était pas pour moi. (Reste que j'y a eu un peu de
contacte avec le Cobol ; les données qu'on recevait du
hôte était en format du Cobol -- BCD ou format flottant 390 --
qu'il fallait alors convertir en format natif AIX.)

--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34



Avatar
kanze
Sylvain wrote:
Jean-Marc Bourguet wrote on 26/06/2006 09:43:
Sylvain writes:

le fait que l'ISO C++ ait spécifié TRES récemment
_flushall() n'implique pas que le monde n'existait pas
avant.


Je me demandais si ca m'avait echappe. Je ne vois pas la
moindre mention de _flushall (ni de flushall d'ailleurs)
dans N2009. C'est quoi ta reference?


c'est pas le monde unix et c'est pas la dernière révision de
la norme (toute norme ayant parfois tendance à renier son
passé...).


Il n'a jamais existé ni dans la norme ni dans le monde Unix. Je
crois que c'est un Microsoftisme (adapté par les autres
fournisseurs sous Windows pour des raisons de compatibilité).

Pourquoi Microsoft l'a inventé, et pourquoi il rejette la blâme
à Posix, je ne sais pas. Depuis la nuit du temps, la façon de
flusher tous les flux, c'était « fflush( NULL ) ». (Enfin,
depuis la nuit de temps, je ne sais pas. Ce n'était pas le cas
en Unix V7, ou la documentation de fflush était on ne peut plus
succincte :

DESCRIPTION
Fflush causes any buffered data for the named output stream
to be written to that file. The stream remains open.

[...]

DIAGNOSTICS
These routines return EOF if stream is not associated with
an output file, or if buffered data cannot be transferred to
that file.

(En passant, tu rémarqueras que même alors, fflush n'avait un
comportement défini que sur un flux en sortie. Et que l'appeler
sur un flux en entrée était une erreur.)

http://msdn2.microsoft.com/en-us/library/ms235367.aspx
(qui me laissa penser que cette fonction était POSIX)


Évidemment, ça pourrait le laisser croire:-). Mais ce n'est pas
Microsoft qui détermine ce qui fait partie de Posix.

[Les autres links sont aussi ceux des fournisseurs de
compilateurs Windows. Donc, compatible avec Microsoft
jusqu'aux erreurs....]

Pour Posix et Unix :
http://www.unix.org/single_unix_specification/.

Pour les normes C et C++, la meilleur site gratuite que je
connais pour la bibliothèque, c'est :
http://www.dinkumware.com/htm_cpl/index.html. (Note que c'est
Dinkumware qui fournissent la bibliothèque standard C++ à
Microsoft.)

--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34



7 8 9 10 11