Partial migration to a public repository
This commit is contained in:
commit
b5904455de
55
.gitignore
vendored
Normal file
55
.gitignore
vendored
Normal file
|
@ -0,0 +1,55 @@
|
|||
# Prerequisites
|
||||
*.d
|
||||
|
||||
# Object files
|
||||
*.o
|
||||
*.ko
|
||||
*.obj
|
||||
*.elf
|
||||
|
||||
# Linker output
|
||||
*.ilk
|
||||
*.map
|
||||
*.exp
|
||||
|
||||
# Precompiled Headers
|
||||
*.gch
|
||||
*.pch
|
||||
|
||||
# Libraries
|
||||
*.lib
|
||||
*.a
|
||||
*.la
|
||||
*.lo
|
||||
|
||||
# Shared objects (inc. Windows DLLs)
|
||||
*.dll
|
||||
*.so
|
||||
*.so.*
|
||||
*.dylib
|
||||
|
||||
# Executables
|
||||
*.exe
|
||||
*.out
|
||||
*.app
|
||||
*.i*86
|
||||
*.x86_64
|
||||
*.hex
|
||||
|
||||
# Debug files
|
||||
*.dSYM/
|
||||
*.su
|
||||
*.idb
|
||||
*.pdb
|
||||
|
||||
# Kernel Module Compile Results
|
||||
*.mod*
|
||||
*.cmd
|
||||
.tmp_versions/
|
||||
modules.order
|
||||
Module.symvers
|
||||
Mkfile.old
|
||||
dkms.conf
|
||||
|
||||
owo
|
||||
test
|
73
task1/task1.c
Normal file
73
task1/task1.c
Normal file
|
@ -0,0 +1,73 @@
|
|||
#include<stdio.h>
|
||||
#include<stdint.h>
|
||||
#include<stdlib.h>
|
||||
#include<errno.h>
|
||||
#include<string.h>
|
||||
|
||||
typedef struct {
|
||||
FILE *file;
|
||||
long int size_of_file;
|
||||
char *contents;
|
||||
} TEXTFILE;
|
||||
|
||||
long int filesize(FILE *fp) {
|
||||
long int size_of_file;
|
||||
fseek(fp, 0, SEEK_END);
|
||||
size_of_file = ftell(fp);
|
||||
fseek(fp, 0, SEEK_SET);
|
||||
return(size_of_file);
|
||||
}
|
||||
|
||||
TEXTFILE* init_file(char* path) {
|
||||
TEXTFILE *buf;
|
||||
buf = malloc(sizeof(TEXTFILE));
|
||||
if (buf == NULL) {
|
||||
fprintf(stderr, "Error allocating structure");
|
||||
return NULL;
|
||||
}
|
||||
buf -> file = fopen(path, "r");
|
||||
if (buf -> file == NULL) {
|
||||
fprintf(stderr, "Error opening file");
|
||||
free(buf);
|
||||
return NULL;
|
||||
}
|
||||
buf -> size_of_file = filesize(buf -> file);
|
||||
buf -> contents = (char *)malloc(buf -> size_of_file);
|
||||
if (buf -> contents == NULL) {
|
||||
fprintf(stderr, "Error allocating contents array");
|
||||
fclose(buf -> file);
|
||||
free(buf);
|
||||
return NULL;
|
||||
}
|
||||
fread(buf -> contents, sizeof(char), buf -> size_of_file, buf -> file);
|
||||
return buf;
|
||||
}
|
||||
|
||||
void close_file(TEXTFILE* file) {
|
||||
free(file -> contents);
|
||||
fclose(file -> file);
|
||||
free(file);
|
||||
}
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
if (argc < 3) {
|
||||
printf("Некорректные аргументы. Требуется файл для чтения и файл для записи.\n");
|
||||
return 1;
|
||||
} else {
|
||||
TEXTFILE* input_file = init_file(argv[1]);
|
||||
if (input_file == NULL) { return 1;}
|
||||
char* pos;
|
||||
pos = strstr(input_file -> contents, "777");
|
||||
while (pos != NULL) {
|
||||
*pos = 'M';
|
||||
*(pos+1) = 'A';
|
||||
*(pos+2) = 'I';
|
||||
pos = strstr(pos, "777");
|
||||
}
|
||||
FILE* output_file = fopen(argv[2], "w");
|
||||
fwrite(input_file -> contents, sizeof(char), input_file -> size_of_file, output_file);
|
||||
fclose(output_file);
|
||||
close_file(input_file);
|
||||
return 0;
|
||||
}
|
||||
}
|
73
task2/task2.c
Normal file
73
task2/task2.c
Normal file
|
@ -0,0 +1,73 @@
|
|||
#include<stdio.h>
|
||||
#include<stdlib.h>
|
||||
|
||||
typedef struct {
|
||||
int* st;
|
||||
int cnt;
|
||||
int size;
|
||||
} STACK;
|
||||
|
||||
STACK* init_stack(int size) {
|
||||
if (size <= 0) {
|
||||
return NULL;
|
||||
}
|
||||
STACK *buf;
|
||||
buf = malloc(sizeof(STACK));
|
||||
if (buf == NULL) {
|
||||
fprintf(stderr, "Error allocating structure\n");
|
||||
return NULL;
|
||||
}
|
||||
buf -> st = malloc(sizeof(int)*size);
|
||||
if (buf -> st == NULL) {
|
||||
fprintf(stderr, "Error allocating array\n");
|
||||
free(buf);
|
||||
return NULL;
|
||||
}
|
||||
buf -> cnt = 0;
|
||||
buf -> size = size;
|
||||
return buf;
|
||||
}
|
||||
|
||||
void destroy_stack(STACK* s) {
|
||||
free(s -> st);
|
||||
free(s);
|
||||
}
|
||||
|
||||
void push(STACK* st, int val) {
|
||||
if ((st -> cnt) < (st -> size)) {
|
||||
st -> st[st -> cnt] = val;
|
||||
(st -> cnt)++;
|
||||
} else {
|
||||
fprintf(stderr, "Stack is full! Stack size is %d, value to add is %d\n", st -> size, val);
|
||||
}
|
||||
}
|
||||
|
||||
int pop(STACK* st) {
|
||||
if ((st -> cnt) > 0) {
|
||||
(st -> cnt)--;
|
||||
return st -> st[st -> cnt];
|
||||
|
||||
} else {
|
||||
fprintf(stderr, "Attempted to pop an empty stack\n");
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
printf("What's the meaning of my life?\n");
|
||||
STACK* huh = init_stack(5);
|
||||
push(huh, 3);
|
||||
push(huh, 2);
|
||||
push(huh, 4);
|
||||
printf("%d", pop(huh));
|
||||
printf("%d\n", pop(huh));
|
||||
printf("Nice. Let's try to overflow this stack now,\n");
|
||||
push(huh, 3);
|
||||
push(huh, 3);
|
||||
push(huh, 3);
|
||||
push(huh, 3);
|
||||
push(huh, 3);
|
||||
printf("thx bye\n");
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in a new issue