Soa Probleme

Embed Size (px)

Citation preview

  • 8/15/2019 Soa Probleme

    1/19

    ----------------------------INFO

    FIS--------------------------------- #include

    #include

    #include #include #include #include

    /** * intoarce * 0 - nu sunt erori * 1 - eroare la apelul functiei stat * 2 - nu s-a putut citi numele fisierului */

    int main(int argc char** arg!"int test$struct stat info$char *nume%is & (char*"malloc(200"$/*nume fisier*/printf(' ntroduceti numele fisierului)'"$

    test&scanf(' s' nume%is"$if(test&&+,% test &1"

    printf('+roare la citire nume fisier'"$e it(2"$

    $

    if(stat(nume%is info"

  • 8/15/2019 Soa Probleme

    2/19

    -----------------HEX DUMP

    ---------------------------

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

    int main(int argc char* arg!FG"

    int fd%ile$

    long l=i6e$ unsigned char * buffer$ si6e5t result$ char sirF10G$ char c$ int start7osition & 0$ char current4ineF100G$

    // incercam sa deschidem fisierul fd%ile & open(arg!F1G ,5 9, 4H"$ if (fd%ile && -1" printf('%isier lipsa3n'"$ e it(1"$

    // calculam dimensiunea fisierului de intrare l=i6e & lseeI(fd%ile 0 =++J5+ 9"$ lseeI(fd%ile 0 =++J5=+D"$

    // alocam memorie in care sa bagam continutul fisierului buffer & (unsigned char*" malloc(si6eof (unsigned char" *l=i6e"$

    if (buffer && ?44" printf('Clocare esuata3n'"$ e it(1"$

    // copiem efecti! continutul fisierului in buffer result & read(fd%ile buffer l=i6e"$

    // fread de mai sus intoarce numarul de bytes copiati // numar ce trebuie sa fie e act acelasi cu cel citit initial

    if (result & l=i6e" printf('+roare la citire3n'"$

  • 8/15/2019 Soa Probleme

    3/19

  • 8/15/2019 Soa Probleme

    4/19

    l=i6e & lseeI(fd%ile 0 =++J5+ 9"$ lseeI(fd%ile 0 =++J5=+D"$

    // alocam memorie in care sa bagam continutul fisierului buffer & (char*" malloc(si6eof (char" *l=i6e"$

    if (buffer && ?44" printf('Clocare esuata3n'"$ e it(1"$

    // copiem efecti! continutul fisierului in buffer result & read(fd%ile buffer l=i6e"$

    // fread de mai sus intoarce numarul de bytes copiati // numar ce trebuie sa fie e act acelasi cu cel citit initial

    if (result & l=i6e"

    printf('+roare la citire3n'"$ e it(1"$

    printf(' s' buffer"$

    printf(' ntroduceti sirul ce trebuie cautat) 3n'"$

    fgets(sir M stdin"$

    printf('Nautam sirul) s3n' sir"$

    // facem !ariabila sir null-terminated deoarece fgets nu o face sirFstrlen(sir" - 1G & O30O$

    // bucla cu care ciclam prin toate elementele bufferuluifor (int i & 0$ i < l=i6e$ iLL"

    c & bufferFiG$

    // !erificam daca am aPuns la sfirsit de linie if (c && O3nO (i - start7osition" > 1"

    // copiem in current4ine portiunea din buffer cerepre6inta ultima linie parcurs strncpy(current4ine bufferFstart7ositionG i -start7osition"$

    // facem linia null-terminated deoarece strncpy nu o face current4ineFi - start7ositionG & O30O$

    // updatam po6itia de start a urmatoarei liniistart7osition & (i L 1"$

  • 8/15/2019 Soa Probleme

    5/19

    // !erificam daca nu cum!a linia curenta contine sirul

    cautat if (strstr(current4ine sir" & ?44" printf(' s3n'current4ine"$

    close(fd%ile"$ free(buffer"$ return 0$

    -------------------------- WORD

    COUNT-------------------

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

    int main(int argc char* arg!FG"

    int fd%ile$ long l=i6e$ unsigned char * buffer$ si6e5t result$ char sirF10G$ char c$ int start7osition & 0$ bool insideAord & false$ unsigned int lineNount & 0$ unsigned int QordNount & 0$

    // incercam sa deschidem fisierul

    fd%ile & open('te to' ,5 9, 4H"$ if (fd%ile && -1" printf('%isier lipsa3n'"$ e it(1"$

    // calculam dimensiunea fisierului de intrare l=i6e & lseeI(fd%ile 0 =++J5+ 9"$ lseeI(fd%ile 0 =++J5=+D"$

  • 8/15/2019 Soa Probleme

    6/19

    // alocam memorie in care sa bagam continutul fisierului buffer & (unsigned char*" malloc(si6eof (unsigned char" *l=i6e"$

    if (buffer && ?44" printf('Clocare esuata3n'"$ e it(1"$

    // copiem efecti! continutul fisierului in buffer result & read(fd%ile buffer l=i6e"$

    // fread de mai sus intoarce numarul de bytes copiati // numar ce trebuie sa fie e act acelasi cu cel citit initial

    if (result & l=i6e" printf('+roare la citire3n'"$ e it(1"$

    // bucla cu care ciclam prin toate elementele bufferuluifor (unsigned int i & 1$ i &OCO bufferFiG & OaO bufferFiG

  • 8/15/2019 Soa Probleme

    7/19

    -----------------------------

    SPLIT---------------------------------------

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

    #define + , (s" do Qrite(1 s strlen(s""$ e it(-1"$ Qhile(0"$#define =D N7H(dest source" do int length & strlen(source"$ dest &(char * "malloc(lengthL1"$ memcpy(dest source length"$ destFlengthG& O30O$ Qhile(0"$

    /* * input corect) nume%isier ntrare numar%isiere esire lungime%isiere */

    int main(int argc char* arg!FG"

    int fd%ile$ int fd,utput$ long l=i6e$ unsigned char * buffer$ si6e5t result$ int offset & 0$

    char * base%ile ame$ char * current%ile ame$ int nr%isiere & 0$ int lung%isiere & 0$ int current4ength & 0$

    if (argc < S" + , ('?nul din argumente lipseste3n'" else

    if (arg!F1G && ?44" + , (' umele fisierului lipseste3n'" else =D N7H(base%ile ame arg!F1G"

    if (arg!F2G && ?44" + , (' umarul fisierelor de iesire lipseste3n'" else nr%isiere & atoi(arg!F2G"$

    if (arg!FTG && ?44"

  • 8/15/2019 Soa Probleme

    8/19

    + , ('9imensiunea fisierelor de iesire lipseste3n'" else lung%isiere & atoi(arg!FTG"$

    fd%ile & open(base%ile ame ,5 9, 4H"$

    if (fd%ile && -1" + , ('%isier lipsa3n'"

    l=i6e & lseeI(fd%ile 0 =++J5+ 9"$ lseeI(fd%ile 0 =++J5=+D"$

    buffer & (unsigned char*" malloc(si6eof (unsigned char" *l=i6e"$

    if (buffer && ?44" + , ('Clocare esuata3n'" else

    result & read(fd%ile buffer l=i6e"$

    if (result & l=i6e" + , ('+roare la citire3n'"

    if (nr%isiere && 0 lung%isiere && 0 "

    + , (' umarul de fisiere si lungimea lor trebuie sa fiediferite de 03n'" if (l=i6e > (nr%isiere*lung%isiere"" + , ('9atele nu !or incapea in noile fisiere3n'"

    if ((nr%isiere*lung%isiere" - l=i6e > lung%isiere-1"+ , ('Uor ramine fisiere goale3n'"

    printf('Cu fost create d fisiere cu numele)3n' nr%isiere"$

    for (int i & 0$ i < nr%isiere offset < l=i6e$ LLi"

    current%ile ame & (char *" malloc(strlen(base%ile ame" L V"$ sprintf(current%ile ame ' s5 d.t t' base%ile ame (i L 1""$

    fd,utput & open(current%ile ame ,5 9A ,5N +CD ,5D ? N=5 ?= =5 A?= =5 8 7 =5 A8 7 =5 A,DE"$

    if (fd,utput && -1" + , (' u s-a putut creea fisierul3n'" else

    current4ength & (l=i6e - offset > lung%isiere @lung%isiere ) l=i6e - offset"$ Qrite(fd,utput buffer L offset current4ength"$ printf(' s d bytes3n' current%ile ame current4ength"$ close(fd,utput"$ free(current%ile ame"$

  • 8/15/2019 Soa Probleme

    9/19

    offset L& current4ength$

    close(fd%ile"$ free(buffer"$

    free(base%ile ame"$

    return 0$

    --------------------------

    PARTE-----------------------------

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

    #define + , (s" do Qrite(1 s strlen(s""$ e it(-1"$ Qhile(0"$

    /* * input corect) nume%isier ntrare numarNaractereCfisare po6itie=tart */

    int main(int argc char* arg!FG"

    int fd%ile$ int fd,utput$ long l=i6e$ unsigned char * buffer$ si6e5t result$ int offset & 0$ int start7osition & 0$ int out4ength & 0$

    if (argc < S"

    + , ('?nul din argumente lipseste3n'" else out4ength & atoi(arg!F2G"$ start7osition & atoi(arg!FTG"$

    fd%ile & open(arg!F1G ,5 9, 4H"$

    if (fd%ile && -1"

  • 8/15/2019 Soa Probleme

    10/19

    + , ('%isier lipsa3n'"

    l=i6e & lseeI(fd%ile 0 =++J5+ 9"$ lseeI(fd%ile 0 =++J5=+D"$

    buffer & (unsigned char*" malloc(si6eof (unsigned char" *l=i6e"$

    if (buffer && ?44" + , ('Clocare esuata3n'" else result & read(fd%ile buffer l=i6e"$

    if (result & l=i6e" + , ('+roare la citire3n'"

    if (out4ength && 0 (start7ositionLout4ength" > l=i6e"

    + , ('9ate de intrare in!alide3n'"

    Qrite(1 buffer L start7osition out4ength"$

    close(fd%ile"$ free(buffer"$

    return 0$

    --------------------------GOLURI

    -------------------------------------

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

    int main(int argc char** arg!"int fisier nr5goluri lungime5gol i contor$struct stat st$char *sirNompletare & '?n sir oarecare de introdus in fisier'$

    if(argc &S"printf('?tili6are) ./goluri nume5fisier nr5goluri

    lungime5gol3n'"$return 1$

  • 8/15/2019 Soa Probleme

    11/19

    if((nr5goluri&atoi(arg!F2G""

  • 8/15/2019 Soa Probleme

    12/19

  • 8/15/2019 Soa Probleme

    13/19

    return 0$

    --------------PARINTE CU DOI FII----------------#include #include #include

    int main("

    int p1 fii i iesire$

    for(fii & 1$ fii < T$ fiiLL" p1 & forI("$if (p1&&0"

    printf('fiu d 7 9) d parinte)d3n' fii getpid(" getppid(""$

    e it(1"$

    Qait( iesire"$printf('parinte 7 9) d3n' getpid(""$

    --------------PARINTE CU UN FIU SI UN NEPOT----------------

    #include #include #include

    int main("

    int p1 p2 fii i iesire$

    p1 & forI("$if (p1&&0"

    printf('fiu 7 9) d parinte) d3n' getpid(" getppid(""$

    p2&forI("$if(p2&&0"printf('nepot 7 9) d parinte)

    d3n' getpid(" getppid(""$e it(2"$

    e it(1"$

    Qait( iesire"$

  • 8/15/2019 Soa Probleme

    14/19

    printf('parinte) d iesire3n' getpid(""$

    --------------PARINTE CU DOI FII SI DOI NEPOTI----------------

    #include #include #include

    int main("

    int p1 p2 fii i iesire$

    for(fii & 1$ fii < T$ fiiLL" p1 & forI("$if (p1&&0"

    printf('%iu d 7 9) d parinte)d3n' fii getpid(" getppid(""$p2&forI("$if(p2&&0"

    printf(' epot d 7 9) d parinte)d3n' fii getpid(" getppid(""$

    e it(2"$

    Qait( iesire"$e it(1"$

    Qait( iesire"$printf('parinte 7 9) d3n' getpid(""$

    --------------CONDUCTA LA PARINTE CU UN FIU SI UN NEPOT---------------

    ##include #include #include

    int main("

    int p1 p2 pipe1F2G i iesire$char c$

    if(pipe(pipe1"&&-1"printf(' u s-a putut crea pipe in procesd3n' getpid(""$

  • 8/15/2019 Soa Probleme

    15/19

    p1 & forI("$if (p1&&0"

    printf('fiu 7 9) d parinte) d3n' getpid(" getppid(""$

    close(1"$dup(pipe1F1G"$close(pipe1F0G"$

    p2&forI("$if(p2&&0" //nepot

    c&OCO$for(i&0$i

  • 8/15/2019 Soa Probleme

    16/19

    close(1"$dup(pipe1F1G"$close(pipe1F0G"$

    p2&forI("$if(p2&&0"

    //printf(' epot d 7 9) d parinte)d3n' fii getpid(" getppid(""$

    c&(fii&&1"@OYO)ONO$for(i&0$i

  • 8/15/2019 Soa Probleme

    17/19

    if(pipe(pipe1"&&-1"printf(' u s-a putut crea pipe in procesd3n' getpid(""$

    p1 & forI("$if (p1&&0"

    close(pipe1F1G"$

    Qhile(read(pipe1F0G c 1">0"if(c>&OaO c&O0O c

  • 8/15/2019 Soa Probleme

    18/19

    close(1"$dup(pipe1F1G"$close(pipe1F0G"$

    p2&forI("$if(p2&&0" //nepot

    c&OCO$Qhile(1"printf(' c' c"$e it(2"$

    e it(1"$

    close(pipe1F1G"$

    Qhile(read(pipe1F0G c 1""printf(' c' c"$

    close(pipe1F0G"$printf('3nparinte) d iesire3n' getpid(""$

    --------PIPE 3 INFINIT --------------

    #include

    #include #include

    int main("

    int p1 p2 fii pipe1F2G i iesire$char c$

    if(pipe(pipe1"&&-1"printf(' u s-a putut crea pipe in procesd3n' getpid(""$

    for(fii & 1$ fii < T$ fiiLL" p1 & forI("$if (p1&&0"

    printf('%iu d 7 9) d parinte)d3n' fii getpid(" getppid(""$

    close(1"$dup(pipe1F1G"$

  • 8/15/2019 Soa Probleme

    19/19

    close(pipe1F0G"$

    p2&forI("$if(p2&&0"

    //printf(' epot d 7 9) d parinte)d3n' fii getpid(" getppid(""$

    c&(fii&&1"@OYO)ONO$Qhile(1"printf(' c' c"$

    e it(2"$

    e it(1"$

    close(pipe1F1G"$

    Qhile(read(pipe1F0G c 1""

    printf(' c' c"$

    close(pipe1F0G"$

    printf('3nparinte 7 9) d3n' getpid(""$