Gå til innhold

nybegynner, trenger hjelp til krøll pekerkrøll


Anbefalte innlegg

Skrevet

hei har en liten kodesnutt her jeg trenger forklaring på.

 

hvorfor blir det slik at når jeg kjører dette programmet med * som første argument, blir ikke utskriften * men k istedet? jeg antar at det blir krøll med pekere her, men trenger litt god forklaring =)

 

 

int main(int argc, char *argv[]) {

 

cout << argv[1]<<endl;

return 0;

}

Videoannonse
Annonse
Skrevet

Hvis du bruker Linux:

Dette er en feature/bug i designet i UNIX.

I UNIX systemer er det shellet som bytter om * og lignende med en liste over filene i mappen. Så hvis du skriver ut alle elementene i argv skal du få en liste over alle filene i mappen.

Skrevet

Hehe

Er vel ikke en feil, men jeg synes det er et dårlig designvalg.

Det hadde vært bedre om dette var en funksjon i programmeringsspråket fremfor at shellet gjør det.

 

Et problem dette kan skape, er at dersom en lager en fil som heter -r (som er helt lovlig) og du deretter skriver rm * for å slette alle filene i mappen, så vil -r bli sett på som et programargument og ikke en fil, og dermed vil alle undermapper også bli slettet, men -r blir igjen.

 

Er det en bug, eller en feature da?

Skrevet
Et problem dette kan skape, er at dersom en lager en fil som heter -r (som er helt lovlig) og du deretter skriver rm * for å slette alle filene i mappen, så vil -r bli sett på som et programargument og ikke en fil, og dermed vil alle undermapper også bli slettet, men -r blir igjen.

 

Er det en bug, eller en feature da?

 

Ingen av delene -- dette er feil bruk av shellet. Den rette framgangsmåten er selvsagt å bruke 'rm ./*'. For å ikke snakke om alle måtene programmene ville ha ekspandert * feil på.

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...