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
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");
}
}
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
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