koodaus apua tarvin!

Trakoitus olisi toteuttaa ohjelma mikä vaihtaa tiedostolle uuden nimen. Uuden nimen se ottaisi eri tiedostolta ja kun nimi on vaihdettu se tiedosto jolta nimi otettiin tuhottaisiin.Uudelleen nimetty tiedosto sitten lähettettäisiin eteenpäin! Lähinnä c :lla olisi tarkoitus tehdä! Tiedoston mallitehtävistä ei juuri apuja tähän saa. Vinkkejä!!
2345
Äänestä

Muut lukivat myös

Vastaukset 2

Vanhimmat

kuulostaa nimittäin tuo koodaamasi ohjelman toimintamalli ihan näiltä viimeaikaisilta viruksilta. tartuta koneesi jollain sopivalla viruksella (klez?) ja tutki niiden lähdekoodia...

Äänestä

Tässä olisi pieni koodinpätkä, joka käsittelee hakemistoa ja tiedostoja monipuolisesti. Haluamaasi tarkoitukseen avattavan tiedoston nimi pitää valita hakemistosta löytyneistä(nehän etsitään tässä), ja alkuperäinen tuhota lopuksi (sitä en taida näyttää, mutta sekin lukee alkuotsikoissa)

Muuntele haluamaksesi:

/**
*    @file       generoihtml.c 0.92
*
*         Generoi hakemistolistauksen htmlsivuksi, jossa
*         tiedostot linkkeinä.
*    @author      n.n. 01/2002
*   @see      Kernigan, Ritchie 2000: C-ohjelmointi
*         Warren Guy 1999: Linux-ohjelmointi
*   @param      Ensimmäisenä parametrina syntyvä html-tiedosto.
*         Huom. tuhoaa ensin olemassaolevan samannimisen
*         tiedoston. Seuraavat parametrit ovat läpikäytävien
*         tiedostojen nimet. Korvausmerkit käyvät.
*   
*   @versio      0.90 Perusversio 14/01/2002
*          0.91 Lisätty hakemistonkäsittely
*         0.92 Lisätty funktiot pwd ja basename 17/01/2002
*
*   @example   Esimerkiksi
*/ //          generoihtml index0.html dokut/*.pdf *.htm*
/*         generoi index0.html tiedostoon linkit yhden ylempänä
*         olevan dokutt hakemiston kaikista adobe-pdf ja
*         paikallisen hakemiston .htm .html webbisivuista
*         poistaen hakemistopolun alkuosan käyttäjälle
*         näkyvistä nimistä ,mutta jättää alkuosan
*         (suhteellisen polun) linkkeihin.
*         
*   @compilers   Tested with GNU compiler v. 2.95 - 3.03
*         Unix (solaris 7), win98, NT4, win2000:
*         You don't need note backslashs in win environment,
*         if you have cygwin gcc installed.
*/


#include
#include
#include
#include
#include
#include
#include

void fname(char *hakemisto, char *name, FILE *fp);
void fteeheaderi(FILE *fp);
void fteefooteri(FILE *fp);
char *basename(char *name);
char *pwd(char *name);

int main(int argc, char **argv)
{
FILE     *fp;
char        argkoostettava[256];
char       *hakemisto="";

strcpy(argkoostettava, argv[1]);
fprintf(stderr, "Argumettien määrä: %d
", argc);

/* Siirry hakemistoon ja ota pwd talteen */
if ( strcmp(argv[1], basename(argv[1])) )
{
hakemisto = pwd(argv[1]);
if ( !chdir(hakemisto))
    fprintf(stderr, "Ei voi siirtyä hakemistoon %s, tai ollaan jo siellä.
"
       , hakemisto);
}

if (argc ==1)
{
if ( (fp = fopen("index0.html", "w")) == NULL )
    fprintf(stderr,"Ei voi avata syöttö html-tiedostoa %s
", "index0.html");
fflush(fp);
fname(hakemisto, ".", fp);
}
else
{
/* avaa syöttötiedosto, älä lisää alkuosaa */
if (--argc > 0)
   if ( (fp = fopen(*++argv, "w")) == NULL )
    fprintf(stderr,"Ei voi avata syöttö html-tiedostoa %s
", *argv);
fflush(fp);
fteeheaderi(fp);

/* lue tiedostot, lisää alkuosa */
while (--argc > 0)
{
    /* älä listaa muodostettavaa tiedostoa itseensä */
    if ( !strcmp(argkoostettava, *++argv) )
    continue;
    if ( strlen(hakemisto) &&
    !strncmp( hakemisto, *argv, strlen(hakemisto)) )
    *argv = *argv + strlen(hakemisto) + 1;
    /* muuten ok. Huom. arvoa lisätty jo vertailussa */
    fname (hakemisto, *argv, fp);
}
}

fteefooteri(fp);
fclose(fp);

return 0;
}


void fname(char *hakemisto, char *name, FILE *fp)
{
struct stat stbuf;
char       lnimi[256]="";

/*strcpy (lnimi, hakemisto);*/
strcat (lnimi, name);

if ( stat(lnimi, &stbuf) == -1)
{
fprintf(stderr, "Ei voi käsitellä tiedostoa %s ", lnimi);
fprintf(stderr, "ERRNO: %d
", errno);
return;
}
/* Siirrä pointteria näkyvässä name:ssa */
name = basename(name);
/* jätä linkkiin alkuosa, muttei näkyvään nimeen */
fprintf(fp, "%s
", lnimi, name);
}


char *basename(char *name)
{
char   *pc;

if ( (pc=strrchr(name, '/')) != NULL)
   return pc + 1;

return name;
}


char *pwd(char *name)
{
char   *pc;
char    *retname;

retname = strdup(name);
if ( (pc=strrchr(retname, '/')) != NULL)
{
   *pc = '';
   return retname;
}
return name;
}


void fteeheaderi(FILE *fp)
{
fprintf (fp, "
");
fprintf (fp, "

DOKUMENTTEJA
");
}


void fteefooteri(FILE *fp)
{
fprintf (fp, "
");
}

Äänestä

Kommentoi aloitusta


g kirjoitti:

Trakoitus olisi toteuttaa ohjelma mikä vaihtaa tiedostolle uuden nimen. Uuden nimen se ottaisi eri tiedostolta ja kun nimi on vaihdettu se tiedosto jolta nimi otettiin tuhottaisiin.Uudelleen nimetty tiedosto sitten lähettettäisiin eteenpäin! Lähinnä c :lla olisi tarkoitus tehdä! Tiedoston mallitehtävistä ei juuri apuja tähän saa. Vinkkejä!!

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu