» Poradna » Hardware

C++

 |   | 

//mam program v c++.Potrebuji nacist obrazek s libovolnym nazvem.
//ted to mam delane tak ze ve zdrojaku se musi zadat na pevno jmeno souboru
//prosim jak napsat funkci abz mohl uzivatel zadat sam nazev souboru??DEKUJI

Odpovědi na otázku

 |   | 

neznám C++, ale snad tam je nějaký Reader z konzole nebo ne?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

int main(int argc, char **argv)
{
/*
argc je pocet argumentu z prikazove radky (1. je jmeno spusteneho souboru, pak nasleduji parametry)
argv je pole ukazatelu na retezce, posledni ukazatel je NULL
*/

// ...
}

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

to moc nechapu prosim te mohl by jste mi to rozepsat vic?prosim

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

tohle je jednoduchy zpusob zadani z prikazoveho radku pri spousteni programu... C/C++

#include

char *nazev_souboru;

int main(int argc, char **argv)
{
if (argc < 2) // bez parametru
nazev_souboru = "defaultni_soubor";
else if (argc == 2) // jeden parametr
nazev_souboru = argv[1];
else { // vic nez jeden parametr
printf("Usage: program [filename]\n");
return 1;
}

// ...

return 0;
}

--------------------

nebo kdybys to chtel zadavat uvnitr programu... predpokladem je klasicky program bezici v terminalu, zadny okynka... opet pro C i C++:

#include

char nazev_souboru[256];

int main(void)
{
printf("Zadej nazev souboru: ");
gets(nazev_souboru); // pozor! nepritel by moh zadat prilis dlouhy retezec -> zapis mimo vyhrazenou pamet

// ...

return 0;
}

-----------

O neco chytrejsi varianta:

#include
#include

char nazev_souboru[256];

void read_string(char *s; int max) // kam chceme retezec ulozit; maximalni delka
{
/* slozitejsi, nez by bylo treba...
vetsina kodu osetruje nehezky pripad, kdyz nepritel zada hodne dlouhy retezec...
retezec ukladame do pevne velkeho pole, tak at se tam vejde */
int i;
char dummy[256];
fgets(nazev_souboru, max, stdin);
i = strlen(nazev_souboru) - 1;
if (nazev_souboru[i] == '\n')
nazev_soubory[i] = 0;
else
do
{
fgets(dummy, 256, stdin);
} while (dummy[strlen(dummy) - 1] != '\n');
}

int main(void)
{
printf("Zadej nazev souboru: ");
read_string(nazev_souboru, 256);

// ...

return 0;
}


PS: ani jsem to po sobe necet, mozna tam jsou chyby

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

jako treba pozrani includu v tomhle foru vsude je stdin.h, dole navic string.h

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

pardon, stdin = stdio

Souhlasím  |  Nesouhlasím  |  Odpovědět




Určitě si přečtěte



Aktuální číslo časopisu Computer

Nejlepší programy pro úpravu fotek zdarma

Externí disky pro zálohu dat

Velký test: herní notebooky

Srovnání 12 batohů