|
| 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
| |
|
|