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