Kjeksen Skrevet 10. august 2005 Del Skrevet 10. august 2005 Trenger litt utdjupning på hvordan disse fungerer. Sålangt har jeg lest litt ifra denne tutorialen. Cprogramming Her står det at argc er argument count, altså nummeret på annal argumenter og at argv er en liste / array over argumentene. Disse blir da passert til programmet fra kommando linjen (!?) Jeg har også fått med meg at argv[0] er navnet og plasseringen til .cpp fila. Der står også at argc burde være 2 for at programmet skal være riktig kjørt. Hvorfor det? Trenger bitte litt hjelp her. int nNumArgsIgnored = (argc - 3); if (nNumArgsIgnored > 0) { cerr << nNumArgsIgnored << " extra argument" << (nNumArgsIgnored == 1 ? "" : "s") << " ignored. FYI." << endl; Og hæ? hva vil dette si? for og skjønne koden trenger jeg først og fremst og skjønne hvordan argc og argv funker. Vil være evig takknemlig om noen gidder å hjelpe til å forstå dette. Lenke til kommentar
dabear Skrevet 10. august 2005 Del Skrevet 10. august 2005 Vel, jeg kan ikke c særlig godt, men kan forsøke å forklare på grunnlag av mine python kunnskaper. Ettersom argv[0] alltid er kommandoen brukt for å kjøre fila (eller cppfila i c?), vil argc alltid være minst én. Viss du kjører programmet med to parametere (program.exe --hallo --hallo), vil argc være 3 pga at hvert parameter legger til en key i arrayet. Viss du da har 3 argument, vil lengden på argc være 4. Sia (argc -3) == (4-3) == 1, vil if-testen slå til (fordi 1 > 0). Lenke til kommentar
Kjeksen Skrevet 10. august 2005 Forfatter Del Skrevet 10. august 2005 (endret) Ok, la meg stille et meget dumt spørsmål. Hva mener du med å kjøre programmet med 2 parametere? Endret 10. august 2005 av Kjeksen Lenke til kommentar
charlie di meola Skrevet 10. august 2005 Del Skrevet 10. august 2005 (endret) $ myprogram -abc -def argc = 3 argv[0] = myprogram argv[1] = -abc argv[2] = -def litt kode så skjønner du det lett int main(int argc, char **argv) { int i=0, c=argc-1; printf("argc: %d\n",argc); for ( i=0; i<=c; i++ ) { printf("argv[%d]: %10s\n",i,argv[i]); } return 0; } Endret 10. august 2005 av charlie di meola Lenke til kommentar
Kjeksen Skrevet 15. august 2005 Forfatter Del Skrevet 15. august 2005 Hm, har en merkelig feil her. #include <iostream> #include <winsock.h> #include <cstdlib> #include <cstdio> using namespace std; int main(int argc, char *argv[]) { cout << "Number of args: " << argc << endl; for(int i = 0; i < 2; i++) { cout << "Arg: " << argv[i] << endl; } struct hostent *h; if (argc != 2) { // error check the command line cerr<< "ERROR commandline arguments!"; exit(1); } if ((h=gethostbyname(argv[1])) == NULL) { // get the host info cerr << "gethostbyname!"; exit(1); } cout << "Host name: " << h->h_name; cout << "IP Address : " << inet_ntoa(*((struct in_addr *)h->h_addr)); return 0; } Hvorfor i h***** f*** funker ikke dette?? Bruker kommandolinja og skriver test.exe andreas andreas er navnet på maskinen min.. Lenke til kommentar
Dead_Rabbit Skrevet 15. august 2005 Del Skrevet 15. august 2005 http://www.ecst.csuchico.edu/~beej/guide/n...ro.html#windows Tror dette skulle hjelpe Lenke til kommentar
Kjeksen Skrevet 15. august 2005 Forfatter Del Skrevet 15. august 2005 Å seff, herregud..jaja..slikt kan skje Lenke til kommentar
Kjeksen Skrevet 15. august 2005 Forfatter Del Skrevet 15. august 2005 Har da laget en stream server og en klient. Tenkte jeg skulle teste "loopback" ip`en. Det er vel serveren som skal ha den ip`en? Har hittil ikke lyktes med å få klienten til å connecte seg opp mot servern. Får error når jeg skal connecte. Vet ikke om det kanskje har noe med at porten som jeg bruker kan bli brukt av noe annet. Noen som har noen tips ang. dette hadde vært fint. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå