Zdravím :)
potřeboval bych argv[2] převést na číslo a dál s ním pracovat, jako s číslem .. při nejlepším na double. Vůbec mě ale nenapadá, jak to udělat a nijak mi to nejde .. nevíte někdo, jak na to? :/
Fórum › C / C++
C - převod parametru
![](img/forum_vlakno_help_vyreseno.png)
v C na to muzes pouzit sscanf ... neco jako sscanf( argv[2], "%f", &mujdouble );
a v c++ je treba stringstream... pracuje se s nim pak jako s cin
taky sou mozna nejaky funkce ... atoi atof? nejsem si jist .. ale vypada ze jo http://www.cplusplus.com/reference/clibrary/cstdlib/atof.html
To crAzY^ : no ono to funguje jen ne tak jak myslis... ten ukazatel na retezec se veme a pretypuje na double...
s tim co je v retezci by to nemelo nic spolecneho :)
Tak ještě něco bych potřeboval .. mám
while (scanf("%lf", &cislo) != EOF) {
c = cislo;
pole[x] = cislo;
x++;
if ((isspace(c)) && (c == '\n'))
{
printf("\n");
} else {}
}
Kde načítám hodnoty double, dokud nestistknu CTRL+D .. potřebuju ošetřit zadávání čísel double, takže když někdo zadá něco jinýho než např. 56.4 nebo 5 .. prostě nějakej text .. aby mi to vyhodilo nějakou hlášku třeba.. :/
To Koja : Najdi si help k funkci scanf, tam se doctes, neco v tom smyslu, ze vraci pocet spravne nactenych prvku specifikovanych formatovacim retezcem (%d %i atd...). Takze, kdyz chces nacist long double a na vstupu je retezec, tak scanf nic nenacte (POZOR, ale sebere ti to z vyrovnavaci pameti pro vstup-vystupni operace nebo jak se to jmenuje, ted nevim ja ted volam pres skype a to uz je na me moc veci najednou :-D)
A co mám teda dát do while, když to chci načítat tak dlouho, dokud se nestiskne CTRL+D? Resp. do vstupu napíšu např.
45.6 34.6 3 53.6
6.04 45.6
Potom stisknu CTRL+D a provedou se další funkce .. zatím mi to takhle valí, akorát se nekontroluje, že je to double :/ Když se tam zadá nějakej text bo blbost, tak to hodí Segmentation fault a program se ukončí .. a místo toho bych chtěl, aby hodil hlášku, co chci já a ukončil se.
Jo, to dělá asi tak to, co to moje .. a jak mám zkontrolovat, že je to double? Že to není text? Když tam zadám text, tak mi to hodí Segmentation fault a ukončí se program. Když to zkusím nějak ošetřit a napíšu tam text, tak se to zacyklí..
To o-lox: Přesně tak, jenom bych to napsal tak jak se to běžně v céčku píše :smile1:
int n; // počet načtených prvků
while ((n = scanf("%lf", &cislo)) != EOF)
{
if (n == 0)
{ // chybný vstup programu
printf("Zadavej cisla amatere!!\n");
exit(1); // ukončí celý program s chybovým kódem 1
}
pole[x++] = cislo;
/* Nechápu na co je ten kód pod komentářem. Každopádně když
* načteš něco jiného než číslo, scanf ti do "cislo" nic neuloží
* To je ten segemtation fault.. */
c = cislo;
if ((isspace(c)) && (c == '\n'))
{
printf("\n");
}
}
![](img/forum_nove_psp_new.png)
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
![](/img/smile/1.gif)
![](/img/smile/2.gif)
![](/img/smile/3.gif)
![](/img/smile/4.gif)
![](/img/smile/5.gif)
![](/img/smile/6.gif)
![](/img/smile/7.gif)
![](/img/smile/8.gif)
![](/img/smile/9.gif)
![](/img/smile/10.gif)
![](/img/smile/11.gif)
![](/img/smile/12.gif)
![](/img/smile/13.gif)
![](/img/smile/14.gif)
![](/img/smile/15.gif)
![](/img/smile/16.gif)
![](/img/smile/17.gif)
![](/img/smile/18.gif)
![](/img/smile/19.gif)
![](/img/smile/20.gif)
![](/img/smile/21.gif)
![](/img/smile/22.gif)
![](/img/smile/23.gif)
![](/img/smile/24.gif)
![](/img/smile/25.gif)
![](/img/smile/26.gif)
![](/img/smile/27.gif)
![](/img/smile/28.gif)
![](/img/smile/29.gif)
![](/img/smile/30.gif)
![](/img/smile/31.gif)
![](/img/smile/32.gif)
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Předání parametrů formuláře a zároveň dalších parametrů — založil Filip
Předání parametrů — založil don_Dominique
čtení parametru — založil Kuba-$
Získání GET parametru — založil Kouky
Překlad adres/parametrů — založil Peet
Moderátoři diskuze