Zdravim,
vedeli by ste mi prosim niekto poradit ako nacitat zo standardneho vstupu do premennej (najlepsie asi cez scanf) velmi velke cisla napr 60 miestne cislo. (ale aj väcsie)
Diky za rady.
TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Dokud je druhý znak stringu nenulový, tak je string delší než 1 znak. (Za předpokladu, že se něco načetlo. Kontrolu chyb jsem vynechal.)
To pole má 100 znaků, 99 ve scanfu znamená, že se má načíst maximálně 99 znaků (+ ukončovací nula).
Nahlásit jako SPAM
IP: 213.211.51.–scanf("%99s", cislo); znamená, že načte 99 znaků ze vstupu. Že je to řetězec, funkce scanf na konec doplní znak s hodnotou 0x00. To znamená, že funkce naplní maximálně 100 znaků což je velikost pole, kam se řetězec ukládá. Je to hlídání meze pole a ochrana před zápisem za pole do paměti, která mi nepatří.
cislo[1] - víceciferné číslo bude mít na této pozici znak, jednociferné hodnotu 0x00. Funkce sprintf(cislo, "%u", soucet); vytváří mezivýsledek uložený jako řetězec na stejné místo jako zadané číslo (zadané číslo se tím ztratí) Takže sčítá cifry tak dlouho, dokud nedostane jednociferný součet
Nahlásit jako SPAM
IP: 195.178.67.–Otázka je, zda by se z klávesnice tolik znaků dalo zadat. Pokud by byl vstup ze souboru, tak takové množství znaků možné je. Pak je možné načítat a zpracovávat po částech. I při 2 mil. cifer by pak na součet cifer měl stačit bez problémů int.
hu
Ještě pozn: pokud je int veliký alespoň 32 bitů.
Nahlásit jako SPAM
IP: 195.178.67.–
Zjistit počet nových příspěvků
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
































© 2003–2026 Programujte.com