/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
Argumenter i gpc
Fra : Carsten


Dato : 02-03-06 12:09

Her under er der et uddrag af noget C kode
Hvad gør jeg forkert når jeg vil sammenligne argument 3 med "R".
Udtrykket bliver aldrig sandt, selv om jeg kan se at "argp[3]"
indeholder "R" (ved at skrive den ud).

int main(int narg, char *argp[])
{
if (argp[3] == "R") // Genetabler database uden at slette
eksisterende indhold
{


Mvh
Carsten
(Nybegynder i C)

 
 
Jacob Bunk Nielsen (02-03-2006)
Kommentar
Fra : Jacob Bunk Nielsen


Dato : 02-03-06 12:15

Carsten <mail@no-mail.dk> writes:

> Her under er der et uddrag af noget C kode
> Hvad gør jeg forkert når jeg vil sammenligne argument 3 med "R".

Du skal bruge strcmp eller strncmp - det du gør nu sammenligner
værdien af to pointere. Check strcmp(3).

En anden gang, så prøv at spørge i news:dk.edb.programmering.c, hvor
den slags spørgsmål hører hjemme.

--
Jacob - www.bunk.cc
A little experience often upsets a lot of theory.

Thomas S. Iversen (02-03-2006)
Kommentar
Fra : Thomas S. Iversen


Dato : 02-03-06 12:23

Carsten <mail@no-mail.dk> skrev 2006-03-02:
> Udtrykket bliver aldrig sandt, selv om jeg kan se at "argp[3]"
> indeholder "R" (ved at skrive den ud).

Du sammenligner pointeren der peger på argp[3] med pointeren der peger på
"R". De er aldrig ens.

Thomas
--

Peter Makholm (02-03-2006)
Kommentar
Fra : Peter Makholm


Dato : 02-03-06 12:36

Carsten <mail@no-mail.dk> writes:

> int main(int narg, char *argp[])

Jacob har svaret, så bare en bibemærkning. Hvis du på noget tidspunkt
planlægger at andre skal læse din kode, vil du så ikke gerne kalde
argumenterne til main for argc og argv?

--
Peter Makholm | 'Cause suicide is painless
peter@makholm.net | It brings on many changes
http://hacking.dk | And I can take or leave it if I please
| -- Suicide is painless

Ukendt (02-03-2006)
Kommentar
Fra : Ukendt


Dato : 02-03-06 17:24

Carsten wrote:
>
> int main(int narg, char *argp[])
> {
> if (argp[3] == "R") // Genetabler database uden at slette

Man skal altid checke om argc er stor nok før man begynder
at kigge på pointerne i argv. Og det du sammenligner er
adresserne på de to streng, ikke indholdet. Det vil sige,
at hvis du har to ens strenge liggende hvert sit sted, så
vil udtrykket være falsk fordi adresserne er forskellige.
Du mener måske: if ((argc>=4)&&!strcmp(argv[3],"R")) {
eller noget i den retning.

> (Nybegynder i C)

Ja, det ses. Men vi har jo alle været nybegyndere engang.

--
Kasper Dupont -- Rigtige mænd skriver deres egne backupprogrammer
#define _(_)"d.%.4s%."_"2s" /* This is my new email address */
char*_="@2kaspner"_()"%03"_("4s%.")"t\n";printf(_+11,_+6,_,6,_+2,_+7,_+6);

Carsten (05-03-2006)
Kommentar
Fra : Carsten


Dato : 05-03-06 15:58

> Ja, det ses. Men vi har jo alle været nybegyndere engang.
>

Tak for hjælpen, selvom jeg havde valgt en forkert gruppe (en tanke torsk).

Carsten

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408526
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste