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

Avatar
Gabriel Dos Reis
Sylvain writes:

| j'ai voulu répondre à cette question par un
| (bool) state &= (ref[i] == cdt[i]);
| ou (byte) state |= (ref[i] ^ cdt[i]);

qu'est-ce que cela aurait signifié ?

| répondre au problème d'overflow était bien sur nécessaire, et cela
| avait été réalisé quand j'ai posté.
|
| > Ton code continue à présenter des erreurs sérieuses.
|
| ce n'était pas un /code réponse au problème posé/ mais une
| illustration du fait qu'une solution basée sur char[] n'impliquait pas
| les "pas mal de complications" indiquées

Justement, il aurait fallu au moins qu'elle fût correcte afin
d'atteindre le but cherché. Mais elle ne fait que renforcer le propos
que tu voulais en premier lieu nier.

[...]

| tu ne connais rien de mes éventuelles compétences

cela est très probablement vrai -- comme l'illustre encore l'extrait
ci-dessus.

-- Gaby
Avatar
Gabriel Dos Reis
James Kanze writes:

[...]

| Reste que certains programmes qui les utilisent ajoute une
| attente après une erreur, de façon justement à ne pas répondre
| trop vite.

Yup, c'est devenu je crois une pratique courante dans le monde GNU/Linux.

-- Gaby
Avatar
James Kanze
Sylvain wrote:
James Kanze wrote on 24/06/2006 13:11:
Sylvain wrote:



Le problème exposé, c'est un programme qui ne marche pas ; qui donne
un mauvais résultat, permet dès débordements de buffer,



en effet, mais l'interrogation première du posteur tenait de comment
fonctionne "strcmp" (l'auteur présumait un code retour 0/1, vrai ou
faux).


Ce n'est pas du tout clair. Le code initial souffrait aussi du
problème du débordement de buffer.

preque par hasard, on touve dans le fil l'intégralité des
codes retours (1, 0 et -1)


Ce n'est pas du tout l'intégralité des codes de retour de strcmp
non plus.

et l'information sur le sens de ces codes. aurait-il utilisé
par inexpérience stricmp ou strcmpi qu'apparemment on aurait
choisi de ne pas répondre à /sa/ question: "comment faire en
sorte de comparer tous les caractères".


C'est quoi, strcmpi ?

j'ai voulu répondre à cette question par un
(bool) state &= (ref[i] == cdt[i]);
ou (byte) state |= (ref[i] ^ cdt[i]);


répondre au problème d'overflow était bien sur nécessaire, et
cela avait été réalisé quand j'ai posté.


Ton code continue à présenter des erreurs sérieuses.



ce n'était pas un /code réponse au problème posé/ mais une
illustration du fait qu'une solution basée sur char[]
n'impliquait pas les "pas mal de complications" indiquées


Sauf que c'est facile à éviter des complications quand on
accepte de ne pas être correct.

je comprends très bien que le cas limite où la saisie n'inclut
pas de marque de fin de ligne (telle que générée par les 3
exemples donnés) résulte en une valeur incorrecte de 'cnt'.


Donc, il te faut une complication en plus pour traiter le cas.

dans ces trois cas la probabilité que le hash de 20 octets
aléatoires (dump mémoire) où fixe (0ff) matche celui du
passphrase référence est nulle, donc le code ne délivrera pas
des autorisations d'accès à tort (et ne provoque pas de
B.Ovrflw).


En revanche, d'après tes postings, j'ai
de très fortes doutes sur tes compétences en C++, ou dans les
bases de la génie logicielle. [...]



tu confonds encore C++ et utilisation des bibliothèques
standards.


Qui font partie du langage. Ne pas utiliser les moyens
disponible à bonne échéance, c'est une signe d'une manque de
compétence, soit du langage (parce qu'on ne les connaît pas),
soit de la génie logicielle (parce qu'on fait plus compliqué et
moins lisible exprès).

tu ne connais rien de mes éventuelles compétences


Tu en montres une partie à travers tes réponses.

--
James Kanze
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
James Kanze
Sylvain wrote:
James Kanze wrote on 24/06/2006 13:11:


j'ai de très fortes doutes ...



moi aussi j'avais de très fort doutes constatant que 'Gabi Software'
n'est enregistré sur aucun registre de commerce


Tu n'as pas dû régarder celui de Versailles. St,-Cyr se trouvant
dans les Yvelines, c'est bien celui dont elle dépend.

et 'gabi-soft.fr' non déclaré comme domaine.


Elle ne sert pas actuellement, pour diverses raisons, mais il
m'appartient. Depuis 1994, environ.

ce nouveau 'neuf.fr' dissipe mes doutes, comme quoi il y a
surement plein de façons d'être professionnel. :)


Tant que je n'ai pas trouvé de fournisseur « professionnel »,
qui marche de façon stable et fiable, ma connectivité va bien
évoluer. Gabi Software a beau exister, en diverses formes,
depuis 1989, elle reste quand même une petite boîte, pas assez
grande pour justifier une ligne loué et d'agir comme son propre
fournisseur.

--
James Kanze
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
Sylvain
James Kanze wrote on 25/06/2006 23:26:
Sylvain wrote:
James Kanze wrote on 24/06/2006 13:11:

j'ai de très fortes doutes ...


moi aussi j'avais de très fort doutes constatant que 'Gabi Software'
n'est enregistré sur aucun registre de commerce


Tu n'as pas dû régarder celui de Versailles. St,-Cyr se trouvant
dans les Yvelines, c'est bien celui dont elle dépend.


ok, elle n'enregistre pas ses résultats alors, ou les administrations
compétentes ont encore des progrès à faire (ce qui est surement vrai
indépendament de cette remarque d'ailleurs).

et 'gabi-soft.fr' non déclaré comme domaine.


Elle ne sert pas actuellement, pour diverses raisons, mais il
m'appartient. Depuis 1994, environ.


il t'appartient et l'afnic ne le sait pas !!?!

décidement tu es en enregistré partout et "ils" font exprès de
perdre/nier tes records, byzarre.

"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.

ce nouveau 'neuf.fr' dissipe mes doutes, comme quoi il y a
surement plein de façons d'être professionnel. :)


Tant que je n'ai pas trouvé de fournisseur « professionnel »,
qui marche de façon stable et fiable, ma connectivité va bien


?!? ta connectivité locale n'a rien à voir avec une possession de domaine.

évoluer. Gabi Software a beau exister, en diverses formes,
depuis 1989, elle reste quand même une petite boîte, pas assez
grande pour justifier une ligne loué et d'agir comme son propre
fournisseur.


comprends pas non plus; la plupart des sociétés (et quasi tous les
particuliers) sont hébergés et passent par le réseau public pour
utiliser / gérer leur location - en caricaturant un peu seuls les
universitaires s'auto-hébergent sur renater.

Sylvain.



Avatar
Sylvain
James Kanze wrote on 25/06/2006 23:20:

en effet, mais l'interrogation première du posteur tenait de comment
fonctionne "strcmp" (l'auteur présumait un code retour 0/1, vrai ou
faux).


Ce n'est pas du tout clair.


hmm ? "Comment je peux faire pour que le programme teste un à un les
caratères?" pas clair ???

Le code initial souffrait aussi du
problème du débordement de buffer.


si on l'a pas dit 30 fois, c'est 50.

preque par hasard, on touve dans le fil l'intégralité des
codes retours (1, 0 et -1)


Ce n'est pas du tout l'intégralité des codes de retour de strcmp
non plus.


ah bon, merci de ne les lister, ne fournir de pointeur (url) pour nous
permettre de progresser alors; merci aussi de ne pas avoir fourni cette
info en réponse au PO ni au post listant ces 3 codes.

C'est quoi, strcmpi ?


l'ancien nom de stricmp il me semble, on le trouve encore dans certain
string.h

Sauf que c'est facile à éviter des complications quand on
accepte de ne pas être correct.


?? tu voulais dire quoi ?

Donc, il te faut une complication en plus pour traiter le cas.


oui, tout à fait, une ENORME complication genre c==EOF, énorme!

Qui font partie du langage. Ne pas utiliser les moyens
disponible à bonne échéance,


"escient" ?

c'est une signe d'une manque de
compétence, soit du langage (parce qu'on ne les connaît pas),


James, pourquoi radoter ? tu le sais que tu penses que je suis "non
compétent, non professionnel en langage C++" (c)(r)(tm)

soit de la génie logicielle (parce qu'on fait plus compliqué et
moins lisible exprès).


la génie ? c'est qui ? y'a une miss C++ maintenant ? le défilé est en
maillot de bain ?

Tu en montres une partie à travers tes réponses.


je montre ce que j'ai envie de. (jai déjà dit que je n'avais pas vendu
vendre une image sur ce ng).

Sylvain.


Avatar
Sylvain
Gabriel Dos Reis wrote on 26/06/2006 02:54:
Sylvain writes:

[...]

| > C'est quoi, strcmpi ?
|
| l'ancien nom de stricmp il me semble,
^^^^^^^^^^^^

ancien où ?


déjà ancien et remplacé par macro en stricmp en 1991 pour les distrib
que j'ai regardé.

chez qui ?


chez qui quoi ?

Et qu'est-ce que c'est « stricmp » ?


tu ne connais pas les librairies standard C ?
un fu2 fclc peut être ?

Sylvain.

Avatar
Sylvain
James Kanze wrote on 23/06/2006 20:06:
Sylvain wrote:

[...]
je mets plutot un flush avant chaque nouvel input.


Et depuis quand est-ce qu'un flux en entrée supporte un flush ?


btw, depuis 1990 également (et présent dans les distrib. récentes).

prototype: int flushall(void);
definition: stdio.h
action: vide toutes les mémoires tampons associées à des flux.
description: vide toutes les mémoires tampons associées aux flux
d'entrée ouverts, et écrit dans les [...] aux flux de sorite ouverts.

Sylvain.


Avatar
Gabriel Dos Reis
Sylvain writes:

[...]

| > C'est quoi, strcmpi ?
|
| l'ancien nom de stricmp il me semble,
^^^^^^^^^^^^

ancien où ? chez qui ? Et qu'est-ce que c'est « stricmp » ?

-- Gaby
Avatar
Sylvain
Gabriel Dos Reis wrote on 26/06/2006 04:50:
Sylvain writes:

| Gabriel Dos Reis wrote on 26/06/2006 02:54:
| > Sylvain writes:
| > [...]
| > | > C'est quoi, strcmpi ?
| > | | l'ancien nom de stricmp il me semble,
| > ^^^^^^^^^^^^
| > ancien où ?
|
| déjà ancien et remplacé par macro en stricmp en 1991 pour les distrib
| que j'ai regardé.

tu ne réponds toujours pas à la question posée.


tu connais Google ? 49200 réponses

implémenté (d'expérience) par Microsoft, Watcom, Borland et surement par
tout compilateur conforme POSIX.


| > chez qui ?
|
| chez qui quoi ?

Cette fonction est inexistante de la définition de C. Donc si tu en


quelle définition ? dire "non conformité" sans citer son referee est un
peu léger.


parles, c'est que tu as dû l'apercevoir chezx quelqu'un, non ?

| > Et qu'est-ce que c'est « stricmp » ?
|
| tu ne connais pas les librairies standard C ?

Je connais la bibliothèque standard C.


tu montres que ce n'est pas le pas.

Elle ne contient aucune
fonction du nom de « stricmp ».

| un fu2 fclc peut être ?

quel intérêt si la fonction n'existe pas en C ?


fu et suivi sur fclc.

Sylvain.