Avatar billede andy Nybegynder
23. maj 2001 - 10:04 Der er 12 kommentarer og
1 løsning

Begynder i C/C++

Hejsa.

Jeg kunne godt bruge lidt hjælp til at komme i gang med at lave nogle scripts i C/C++, som skal bruges på nettet.

Hvordan fungerer det hele? Hvad skal jeg bruge?
Avatar billede wisen Nybegynder
23. maj 2001 - 10:10 #1
C/C++ - script ? Det har jeg godt nok aldrig hørt om, lytter lige med.
Avatar billede wisen Nybegynder
23. maj 2001 - 10:11 #2
.. mener du evt. CGI ?
Avatar billede andy Nybegynder
23. maj 2001 - 10:25 #3
JA!
Avatar billede wisen Nybegynder
23. maj 2001 - 10:26 #4
Ok, så er jeg med :)
Avatar billede jacobchr Nybegynder
23. maj 2001 - 10:39 #5
Jeg fandt et link til det her, håber at det hjælper.

http://hoohoo.ncsa.uiuc.edu/cgi/overview.html

/jacobchr
Avatar billede henrik_ffc Nybegynder
23. maj 2001 - 10:42 #6
Du kan fx bruge et C CGI program til at modtage variablerne fra en <form>. Hvis du sender data til programmet via POST-metoden bliver data modtaget via STDIN. Hvis du derimod bruger GET, bliver variablene tilføjet URLen.

Nedenstående program viser hvordan man KAN gøre det med POST metoden, men brug koden her som inspiration og viderudvikle som du vil.

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void GetArgument(int argCount);                                  // Henter argumenter og viser dem p. sk.rmen
char *MakeWord(FILE *ind, char stoptegn, int *argCount);    // snupper og returnerer et argument
char X2C(char *what);                                    // Omregner fra hexadecimalt til char
void Unescape_Arg(char *arg);                                                                  // Fjerner escape-sekvenser
void plus2space(char *arg);                                              // Fjerner eller erstatter u.nskede tegn
int InitAntal();                                                // Unders.ger environment og finder antallet af forventede tegn
void Error(char *err);
void main(void);

void GetArgument(int argCount)
        // .hovedprogram., der modtager og udskriver argumenter
{
        char *TempName, *TempValue;
                       
        printf(\"Content-Type: text/html%c%c\",10,10);
        printf(\"<HTML>\\n<HEAD>\\n\");
        printf(\"<TITLE>Resultat af testprogram</TITLE>\\n\");
        printf(\"</HEAD>\\n<BODY>\\n\");
       
        while (argCount && (!feof(stdin)))
        {
                TempName = MakeWord(stdin, \'=\', &argCount);
                plus2space(TempName);
                Unescape_Arg(TempName);
       
                TempValue = MakeWord(stdin, \'&\', &argCount);
                plus2space(TempValue);
                Unescape_Arg(TempValue);
       
                printf(\"%s = %s<BR>\\n\", TempName, TempValue);
        }

        printf(\"</BODY>\\n</HTML>\\n\");
}
   
char* MakeWord(FILE *ind, char stoptegn, int *argCount)
{              // \'Snupper\' et stdin-argument og returnerer det
        char *word;
        int ll = 0;

        word = (char *) malloc(sizeof(char));
        word[0] = \'\\0\';

        while(*argCount)
        {
                word[ll] = (char) fgetc(ind);
                --(*argCount);
                if((word[ll] == stoptegn) || (feof(ind)) || (!(*argCount)))
                {
                        if(word[ll] != stoptegn)
                        {
                                ll++;
                                word = (char *) realloc(word, strlen(word) + sizeof(char) );
                        }
                        word[ll] = \'\\0\';
                        return word;
                }
                word = (char *) realloc(word, strlen(word) + sizeof(char) );
                ++ll;
        }
        return word;
}
               
char X2C(char *what)    // Omregner fra hexadecimalt til char
{
        register char digit;
               
        digit = (char)(what[0] >= \'A\' ? ((what[0] & 0xdf) - \'A\')+10 : (what[0] - \'0\'));
        digit *= (char)16;
        digit += (char)(what[1] >= \'A\' ? ((what[1] & 0xdf) - \'A\')+10 : (what[1] - \'0\'));
        return digit;
}

void Unescape_Arg(char *arg)    // Fjerner escape-sekvenser
{
        register int x, y;

        for(x = 0, y = 0; arg[y]; ++x, ++y)
        {
                if((arg[x] = arg[y]) == \'%\')
                {
                        arg[x] = X2C(&arg[y+1]);
                        y+=2;
                }
        }
        arg[x] = \'\\0\';
}

void plus2space(char *linie)      // Erstatter \'+\' med mellemrumstegn
{
        register int plads;

        for(plads = 0; linie[plads]; plads++)
                if(linie[plads] == \'+\') linie[plads] = \' \';
}
int InitAntal()
{
        char *TempEnv;

        TempEnv = getenv(\"CONTENT_LENGTH\");
        if(!TempEnv)    // er der overhovedet argumenter?
                Error(\"No arguments what so ever - I dont know what to do!\");

        int argCount = atoi(TempEnv);        // antallet af tegn i argumenterne

        TempEnv = getenv(\"REQUEST_METHOD\");
        if(strcmpi(TempEnv, \"POST\"))
                Error(\"This program should be referenced with a METHOD of POST.\");

        TempEnv = getenv(\"CONTENT_TYPE\");
        if(strcmpi(TempEnv, \"APPLICATION/X-WWW-FORM-URLENCODED\"))
                Error(\"This program can only be used to decode form results.\");

        return argCount;
}

void Error(char *err)  // Udskriver Fejlmeddelse
{
        printf(\"Content-Type: text/html%c%c\",10,10);
        printf(\"<H1>Fejl !!</H1><P>\\n\");
        printf(\"%s\", err);
        exit(0);
}

void main()
{
        int AntalTegn = InitAntal();
                // Find antallet af tegn der skal modtages fra serveren

        GetArgument( AntalTegn );
                // Hent argumenter fra webside
}

Avatar billede andy Nybegynder
23. maj 2001 - 11:02 #7
henrik_ffc>> Tak for eksempelet!

Men hvad skal jeg kalde filen? Hvad skal jeg bruge for at køre den?
Avatar billede andy Nybegynder
23. maj 2001 - 11:07 #8
Og lige en anden ting?

Er det muligt at kontakte en mysql database?
Avatar billede henrik_ffc Nybegynder
23. maj 2001 - 11:23 #9
Du kan gemme filen som \"test.c\", kompilere den og derefter ligge filen \"test.exe\" (hvis du bruger win) eller \"test\" (hvis du bruger et operativsystem) ned i dit cgi-bibliotek.

Derefter laver du en <form action=\"/cgi-bin/test.exe\" method=\"post\"> med nogle forskellige indtastningsfelter og en submit-knap.
Resultatet af denne form sendes derefter til programmet, der returnerer en html-side som resultat.

Og ja du kan godt kontakte en mysql database fra et c program, men jeg plejer at bruge PHP, så her kan jeg desværre ikke hjælpe
Avatar billede andy Nybegynder
23. maj 2001 - 11:31 #10
ok. Tak!

Er det muligt at starte test.exe med en cgi fil?
Så hvis jeg fx har lavet et script etscript.exe kan gå ind på etscript.cgi og derved starte etscript.exe?
Avatar billede henrik_ffc Nybegynder
23. maj 2001 - 11:41 #11
Ikke forstået!

Test.exe ER en cgi-fil...
Hvis det er efternavnet der forvirrer, så kald den bare test.cgi.
C programmet er altså det der bliver startet direkte af serveren, når formens resultater sendes til programmet.
Avatar billede andy Nybegynder
23. maj 2001 - 12:04 #12
nå.... ok.

Jeg har borland compileren. Hvilke argumenter skal jeg complile filen.
Har lige prøvet \"bcc32 -P test.txt\". Virkede fint, men er dét det rigtige?

Avatar billede henrik_ffc Nybegynder
23. maj 2001 - 12:20 #13
Det skulle vist være i orden, bortset fra at -P \'vistnok\' er på som default...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

AP Pension

Løsningsarkitekt

Csis Security Group A/S

Junior Software Engineer

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Nye kolleger søges til IT Stab i Forsvaret

Netcompany A/S

Test Consultant