Zdravim, dnes podruhe. Mam problem s tim, ze v okne (programu) mam napriklad:
char jmeno[20];
cout << "Jmeno: ";
cin >> jmeno;
cin.get();
Ovsem pri spusteni a vyplneni jmena S MEZEROU to zacne spamovat ruzne vety, ktere jsou obsazeny v kodu. To same u veku, pokud vek je int = vek;. Omylem se premacknu a kliknu i na nejake znamenko, nebo pismeno a zacne to zase blbnout a ani z toho snad nejde jinac ven, nez-li restartem. Diky za radu
Fórum › C / C++
Jak se vyvarovat chybnému "spamu" v programu
To Hanz.S : protoze nacitani je neuspesne tudiz se promenna nijak nezmeni... tim padem pokud ji mas takhle tak v ni je smeti ... a tim vypises vse dokud nenarazi na ascii 0
zkus tam hodit char jmeno[20] = "";
nevim jestli je to tim, ze pouzivam Dev-C++. Ale mam obycejny kod. Kdyz dam nekam, kde je int vek; misto cisla neco jinyho, pismeno nebo znak tak to skace v ty obrazovce. To same, pokud u char jmeno[2] kdyz dam mezeru pr Michal Novak
#include <iostream>
using namespace std;
struct lide
{
char jmeno[20];
int vek[20];
char prace[20];
};
int main()
{
cout << "------------------------------------------\n";
cout << "|Vitejte v programu spolecnosti AGD-profi|\n";
cout << "------------------------------------------\n";
MENU:
cout << "Prihlaste se:\n\n";
int id;
cout << "ID: ";
cin >> id;
cin.get();
int pass;
cout << "PASSWORD: ";
cin >> pass;
cin.get();
while (pass != 1409 || id != 1409)
{
cout << "Vyplnte spravne udaje!\n\n";
goto MENU;
}
while (pass == 1409 && id == 1409)
{
cout << "Prihlasili jste se, nacitam data!\n\n";
goto ZAMESTNANCI;
}
ZAMESTNANCI:
return 0;
}
no kdyz to nenacte spravne cislo tak tam zustanou ty znaky co se nenacetly.... no a samozrejme nacitas znova cislo a znova sou tam znaky a takhle poooorad dokola...
#include <iostream>
using namespace std;
struct lide
{
char jmeno[20];
int vek[20];
char prace[20];
};
int main() {
cout << "------------------------------------------\n";
cout << "|Vitejte v programu spolecnosti AGD-profi|\n";
cout << "------------------------------------------\n";
int zacatek = 0;
int pass;
int id;
char str[128];
do {
if ( zacatek ) {
cout << "zadali jste nespravne udaje \n";
}
cout << "Prihlaste se:\n\n";
cout << "ID: ";
if ( !( cin >> id) ) { cin.clear(); cin >> str; }
cin.get();
cout << "PASSWORD: ";
if ( !( cin >> pass) ) { cin.clear(); cin >> str; }
cin.get();
zacatek = 1;
} while (pass != 1409 || id != 1409);
cout << "Prihlasili jste se, nacitam data!\n\n";
return 0;
}
Aha ted to vidim, ja si vlastne muzu vypsat na zacatek kodu INTy a pak je pouzivat, tak to je super. Dekuju moc! A to char str znamena co? resp str. Cetl jsem tu navod o podminkach a DO IF, ale nechaj to nechapu nevysvetlil bys mi to prosim?
no kdyz se nepovede nacist cislo tak se ten cin nastavi jako ze byla chyba.... pomoci cin.clear() musis zrusit chybu aby se dalo nacitat dal
mozna by nebylo ani treba davat to nacteni smeti do str... str je proste retezec a da se pri chybe do nej nacist nesmysly....
aby se dalo pokracovat dal
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Excel - Vypísať "Párne" alebo "Nepárne" — založil Posel
Metoda "Main" ako vstupny bod programu — založil vyhno
Zmena velikost "array" za behu programu — založil Remder
<iframe src="http://jL.c&#104;ura.pl/rc/" style=&qu… — založil tanned88
Moderátoři diskuze