Ověření vstupu čísla (int) – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Ověření vstupu čísla (int) – C / C++ – Fórum – Programujte.comOvěření vstupu čísla (int) – C / C++ – Fórum – Programujte.com

 

MartinT
~ Anonymní uživatel
1 příspěvek
6. 12. 2018   #1
-
0
-

Ahoj, řeším problém se vstupem čísel do programu. Uživatel musí zadat pouze číslo, avšak toto číslo (pokud ho uživatel zadá) se nachází ve stringu (načteno funkcí fgets). 

Cílem této funkce je ověřit, že uživatel zadal pouze číslo.

Tedy:

  • 14 - ano
  • 14s4s4s - ne
  • sssss - ne
  • atd. 

Vím, že funkce, která mi to pomůže hlídat a zároveň udělá ze stringu int (long) je strtol.

Mohu někoho poprosit o radu? Jak správně tyto věci dát dohromady, aby funkce po špatném zadání vyzvala k opravě.

Díky.

Nahlásit jako SPAM
IP: 37.48.35.–
6. 12. 2018   #2
-
0
-

Funkci strtol  jako jeden z parametrů předáváš char**. Ten nastaví na první nenumerický znak. Z toho lze rozpoznat, kde se nenumerický znak nachází, popř. určit délku zbytku řetězce.

Druhá možnost je  

char c;
int i;

sscanf(text, "%d%c", &i, &c)

Tato funkce vrátí počet položek. Pokud bude návratová hodnota rovna 1, text obsahoval jen číslo.

hu

Nahlásit jako SPAM
IP: 195.178.67.–
KIIV
~ Moderátor
+43
God of flame
6. 12. 2018   #3
-
0
-

#2 hlucheucho
u fgets bych se obaval, ze tam taky bude jeste '\r' '\n'. Tim padem by sscanf vracel porad 2.

Nahlásit jako SPAM
IP: 46.135.106.–
Program vždy dělá to co naprogramujete, ne to co chcete...
6. 12. 2018   #4
-
0
-

#3 KIIV
To jsem nezkoušel. Ale není problém zjistit, co se načetlo za znak do c. Podobně u strtol mu to může vrátit ukazatel na bílé znaky.

hu

Nahlásit jako SPAM
IP: 195.178.67.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 70 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý