Upload
damian-cusnir
View
220
Download
0
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(""$