Problém s pointery. – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Problém s pointery. – C / C++ – Fórum – Programujte.comProblém s pointery. – C / C++ – Fórum – Programujte.com

 

Sám_už_nevím
~ Anonymní uživatel
4 příspěvky
23. 12. 2008   #1
-
0
-

Prosím mohli by jste mi poradit, snažím se udělat funkci, která příjme tři argumenty a chtěl bych v té funkci zjistit zda-li je argv[1] shodný s řetězcem "string". Mohli by jste mi ukázat kde dělám chybu? A případně jak ji napravit? Díky dopředu.

#include <stdio.h>

#include <string.h>

/**
* Funkce jež zjistí jestli první argument [argv[1]] odpovídá řetězci.
*/

int is_argument_true ( int _argc, char* _argv, char* _string ) {
int i = 1;
for (; i < _argc; i++) {
return (strcmp(_string, _argv[i]) == 0) ? 0 : 1;
}
}

int main (int argc, char* argv[]) {
char *string = "-?";
int a = is_argument_true (argc, argv, string); // 0 nebo 1
printf("%d",a);
return 0;
}

Nahlásit jako SPAM
IP: 85.207.199.–
crAzY^
~ Moderátor
+10
Grafoman
23. 12. 2008   #2
-
0
-

To Sám_už_nevím : nevím proč v té funkci máš cyklus, kfyž chceš kontrolovat pouze argv[1]

Nahlásit jako SPAM
IP: 89.190.64.–
All you need is vision and time.
crAzY^
~ Moderátor
+10
Grafoman
23. 12. 2008   #3
-
0
-

To crAzY^ : a stejně když se ve funkci objeví return tak se funkce přeruší a vrátí hodnotu takže ten cyklus je k ničemu...
funkce nemůže mít víc návratových hodnot. (popřípadě pole nebo structura)

Nahlásit jako SPAM
IP: 89.190.64.–
All you need is vision and time.
crAzY^
~ Moderátor
+10
Grafoman
23. 12. 2008   #4
-
0
-

To Sám_už_nevím :

#include <iostream>

#include <cstring>

using namespace std;

int is_arg_true(char *_argv, char *_string)
{
if(strcmp(_argv, _string)==0)
return 1;
else
return 0;
}

int main( int argc, char* argv[] )
{
char str[3] = "-a";
int a = is_arg_true(argv[1], str);

cout << a << endl;

system("PAUSE");
return 0;
}


tohle mi funguje

Nahlásit jako SPAM
IP: 89.190.64.–
All you need is vision and time.
Sám_už_nevím
~ Anonymní uživatel
4 příspěvky
23. 12. 2008   #5
-
0
-

Cyklus bych tam rád, protože nevím jestli uživatel argument zadá, když nezadá a já to neprojedu cyklem tak logicky aplikace spadne :(

Nahlásit jako SPAM
IP: 85.207.199.–
crAzY^
~ Moderátor
+10
Grafoman
23. 12. 2008   #6
-
0
-

To Sám_už_nevím : tak jenom zkontroluj jesli ten jeden argument zadal.... nemusí tam být cyklus

Nahlásit jako SPAM
IP: 89.190.64.–
All you need is vision and time.
crAzY^
~ Moderátor
+10
Grafoman
23. 12. 2008   #7
-
0
-

To crAzY^ : z toho kódu co jsi napsal výše vyplývá že pokud argument nezadá tak ta funkce nebude mít žádnou návratovou hodnotu.... (s tím cyklem)

Nahlásit jako SPAM
IP: 89.190.64.–
All you need is vision and time.
Sám_už_nevím
~ Anonymní uživatel
4 příspěvky
23. 12. 2008   #8
-
0
-

Ok, díky moc .. přetvořil jsem to teda s pomocí tebou poslaného kódu na tohle:

#include <stdio.h>

#include <string.h>

/**
* Funkce jež zjistí jestli první argument [argv[1]] odpovídá řetězci.
*/

int is_arg_true (char* _argv, char* _string ) {
return (strcmp(_argv, _string) == 0) ? 0 : 1;
}

int main (int argc, char* argv[]) {
char str[3] = "-?";
if (!argv[1]) {return 0; }
int a = is_arg_true (argv[1], "-?"); // 0 nebo 1
printf("%d",a);
return 0;
}
což funguje, ale byla by nějáká možnost testovat jestli byl argument zadán až v té funkci? Nerad bych to plantal do těla .., ale zase _argv[1] testovat nemůžu musel bych dostat něják celý objekt argv - a to bych byl zase na začátku :) poradíš ještě s tímhle?

Nahlásit jako SPAM
IP: 85.207.199.–
crAzY^
~ Moderátor
+10
Grafoman
23. 12. 2008   #9
-
0
-

To Sám_už_nevím : zamysli se nad tím co ti vrací argc.... takže když argc > 1 tak je argv[1] zadán...

Nahlásit jako SPAM
IP: 89.190.64.–
All you need is vision and time.
Earl Cash0
Věrný člen
23. 12. 2008   #10
-
0
-

To Sám_už_nevím : over si hodnotu v "argc"...pokud je >1, pak byl zadan nejaky argument....

Nahlásit jako SPAM
IP: 193.85.177.–
Oh my goodness, shut me down! Machines making machines. How perverse. (C-3PO)
Earl Cash0
Věrný člen
23. 12. 2008   #11
-
0
-

To crAzY^ : tak jsi byl rychlejsi ;)

Nahlásit jako SPAM
IP: 193.85.177.–
Oh my goodness, shut me down! Machines making machines. How perverse. (C-3PO)
Sám_už_nevím
~ Anonymní uživatel
4 příspěvky
23. 12. 2008   #12
-
0
-

ó tak díky moc :)

Nahlásit jako SPAM
IP: 85.207.199.–
crAzY^
~ Moderátor
+10
Grafoman
23. 12. 2008   #13
-
0
-

a promiňte že sem to roztahal do tolika příspěvků... vždycky mě k tomu ještě něco napadne.... :)

Nahlásit jako SPAM
IP: 89.190.64.–
All you need is vision and time.
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, 54 hostů

Podobná vlákna

Problém s pointery — založil oxidián

Problém s pointery c# — založil Kalgys

Pointery — založil inferno-girl

C++ pointery — založil jane32

Pointery v C — založil chef06

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ý