From a0e771c8b5f1e12d4bc3afeb8f40d17e76a4951a Mon Sep 17 00:00:00 2001 From: pankunull Date: Mon, 25 Aug 2025 05:55:36 +0200 Subject: Added new stuff. --- src/c/__Makefile__ | 30 ++++++++++++++++++++++ src/c/bit-shift/shift | Bin 0 -> 15672 bytes src/c/bit-shift/shift.c | 32 +++++++++++++++++++++++ src/c/copyfile/Makefile | 23 +++++++++++++++++ src/c/copyfile/cf | Bin 0 -> 15568 bytes src/c/copyfile/cf-ng | Bin 0 -> 15816 bytes src/c/copyfile/cf-ng.c | 39 ++++++++++++++++++++++++++++ src/c/copyfile/cf.c | 15 +++++++++++ src/c/ctof | Bin 15648 -> 0 bytes src/c/ctof.c | 44 -------------------------------- src/c/dir | Bin 15624 -> 0 bytes src/c/dir.c | 17 ------------ src/c/hello-c/hello.c | 6 +++++ src/c/list-dir/dir | Bin 0 -> 15624 bytes src/c/list-dir/dir.c | 17 ++++++++++++ src/c/main | Bin 15552 -> 0 bytes src/c/main.c | 25 ------------------ src/c/main2 | Bin 15416 -> 0 bytes src/c/main2.c | 6 ----- src/c/makefile/Makefile | 16 ++++++++++++ src/c/makefile/main | Bin 0 -> 15440 bytes src/c/makefile/main.c | 8 ++++++ src/c/pointer-example/pointer_example.c | 25 ++++++++++++++++++ src/c/shift | Bin 15672 -> 0 bytes src/c/shift.c | 32 ----------------------- src/c/temp-converter/ctof | Bin 0 -> 15648 bytes src/c/temp-converter/ctof.c | 44 ++++++++++++++++++++++++++++++++ 27 files changed, 255 insertions(+), 124 deletions(-) create mode 100644 src/c/__Makefile__ create mode 100755 src/c/bit-shift/shift create mode 100644 src/c/bit-shift/shift.c create mode 100644 src/c/copyfile/Makefile create mode 100755 src/c/copyfile/cf create mode 100755 src/c/copyfile/cf-ng create mode 100644 src/c/copyfile/cf-ng.c create mode 100644 src/c/copyfile/cf.c delete mode 100755 src/c/ctof delete mode 100644 src/c/ctof.c delete mode 100755 src/c/dir delete mode 100644 src/c/dir.c create mode 100644 src/c/hello-c/hello.c create mode 100755 src/c/list-dir/dir create mode 100644 src/c/list-dir/dir.c delete mode 100755 src/c/main delete mode 100644 src/c/main.c delete mode 100755 src/c/main2 delete mode 100644 src/c/main2.c create mode 100644 src/c/makefile/Makefile create mode 100755 src/c/makefile/main create mode 100644 src/c/makefile/main.c create mode 100644 src/c/pointer-example/pointer_example.c delete mode 100755 src/c/shift delete mode 100644 src/c/shift.c create mode 100755 src/c/temp-converter/ctof create mode 100644 src/c/temp-converter/ctof.c diff --git a/src/c/__Makefile__ b/src/c/__Makefile__ new file mode 100644 index 0000000..d6e2bf1 --- /dev/null +++ b/src/c/__Makefile__ @@ -0,0 +1,30 @@ +# Minimal Makefile to compile main.c into an executable named main + +# Compiler +CC = gcc + + +# Flags +CFLAGS = -Wall -Wextra -O2 + + +# Default target +# Tells make what dependencies to compile +all: main + + +# Dependency 'main' +# main.c is the source file +main: main.c + $(CC) $(CFLAGS) -o main main.c + + +# Test target +test: main + @echo -n "main.c test............................" + @./main >/dev/null 2>&1 && echo "OK" || echo "FAILED" + + +# Clean target +clean: + rm -f main diff --git a/src/c/bit-shift/shift b/src/c/bit-shift/shift new file mode 100755 index 0000000..6429b03 Binary files /dev/null and b/src/c/bit-shift/shift differ diff --git a/src/c/bit-shift/shift.c b/src/c/bit-shift/shift.c new file mode 100644 index 0000000..c65b815 --- /dev/null +++ b/src/c/bit-shift/shift.c @@ -0,0 +1,32 @@ +#include + +void print_binary(unsigned char value) { + for (int i = 7; i >= 0; i--) { + printf("%d", (value >> i) & 1); + } + printf("\n"); +} + +int main() { + unsigned char value = 0; // start with all bits off + int bit; + + printf("Starting value: "); + print_binary(value); + + while (1) { + printf("Enter bit to toggle (0-7), or -1 to quit: "); + if (scanf("%d", &bit) != 1) break; + if (bit == -1) break; + if (bit < 0 || bit > 7) { + printf("Invalid bit.\n"); + continue; + } + + value ^= (1 << bit); // toggle the chosen bit + printf("Current value: "); + print_binary(value); + } + + return 0; +} diff --git a/src/c/copyfile/Makefile b/src/c/copyfile/Makefile new file mode 100644 index 0000000..7cf5b87 --- /dev/null +++ b/src/c/copyfile/Makefile @@ -0,0 +1,23 @@ +CC = /usr/bin/gcc +FLAGS = -Wall -Wextra -O2 + +all: cf cf-ng + +cf: cf.c + $(CC) $(FLAGS) -o cf cf.c + +cf-ng: cf-ng.c + $(CC) $(FLAGS) -o cf-ng cf-ng.c + +test-cf: cf + @echo -n "cf.c test.............................." + @./cf >/dev/null 2>&1 && echo "OK" || echo "FAILED" + +test-cf-ng: cf-ng + @echo -n "cf-ng.c test.............................." + @./cf-ng >/dev/null 2>&1 && echo "OK" || echo "FAILED" + + +clean: + rm -v -f cf cf-ng + diff --git a/src/c/copyfile/cf b/src/c/copyfile/cf new file mode 100755 index 0000000..be2b986 Binary files /dev/null and b/src/c/copyfile/cf differ diff --git a/src/c/copyfile/cf-ng b/src/c/copyfile/cf-ng new file mode 100755 index 0000000..35331e9 Binary files /dev/null and b/src/c/copyfile/cf-ng differ diff --git a/src/c/copyfile/cf-ng.c b/src/c/copyfile/cf-ng.c new file mode 100644 index 0000000..8ff770a --- /dev/null +++ b/src/c/copyfile/cf-ng.c @@ -0,0 +1,39 @@ +#include +#include + +int main() { + int c; + size_t size = 1024; // initial buffer size + size_t len = 0; + char *buffer = malloc(size); + if (!buffer) { + perror("malloc"); + return 1; + } + + printf("Type input (Ctrl+D to end):\n"); + + while ((c = getchar()) != EOF) { + // Resize buffer if needed + if (len + 1 >= size) { + size *= 2; + char *tmp = realloc(buffer, size); + if (!tmp) { + free(buffer); + perror("realloc"); + return 1; + } + buffer = tmp; + } + + buffer[len++] = (char)c; + } + + // Null-terminate string + buffer[len] = '\0'; + + printf("\nYou typed:\n%s\n", buffer); + + free(buffer); + return 0; +} diff --git a/src/c/copyfile/cf.c b/src/c/copyfile/cf.c new file mode 100644 index 0000000..ff6b41a --- /dev/null +++ b/src/c/copyfile/cf.c @@ -0,0 +1,15 @@ +#include +/* copy input to output; 2nd version */ + +int +main() +{ + int c; + + while ((c = getchar()) != EOF) + { + putchar(c); + } + + return 0; +} diff --git a/src/c/ctof b/src/c/ctof deleted file mode 100755 index 7a47ff7..0000000 Binary files a/src/c/ctof and /dev/null differ diff --git a/src/c/ctof.c b/src/c/ctof.c deleted file mode 100644 index e61cfcd..0000000 --- a/src/c/ctof.c +++ /dev/null @@ -1,44 +0,0 @@ -#include -#include -#include // for errno -#include // for INT_MAX, INT_MIN - - -/* - F = C x 9/5 + 32 -*/ - -int -main(int argc, char *argv[]) -{ - - if (argc < 2) { - printf("Usage: %s number\n", argv[0]); - return 1; - } - - char *endptr; - - errno = 0; // reset errno - - long value = strtol(argv[1], &endptr, 10); // base 10 - - if (endptr == argv[1]) { - printf("Error: No digits were found\n"); - return 1; - } - if (*endptr != '\0') { - printf("Warning: Trailing characters after number: %s\n", endptr); - return 1; - } - if ((value == LONG_MAX || value == LONG_MIN) && errno == ERANGE) { - printf("Error: Number out of range\n"); - return 1; - } - - float fah = value * 9/5 + 32; - - printf("Fahrenheit: %0.f\n", fah); - - return 0; -} diff --git a/src/c/dir b/src/c/dir deleted file mode 100755 index 7757a29..0000000 Binary files a/src/c/dir and /dev/null differ diff --git a/src/c/dir.c b/src/c/dir.c deleted file mode 100644 index 05803fd..0000000 --- a/src/c/dir.c +++ /dev/null @@ -1,17 +0,0 @@ -#include -#include - -int main() { - DIR *d; - struct dirent *dir; - d = opendir("."); - if (d) { - while ((dir = readdir(d)) != NULL) { - printf("%s\n", dir->d_name); - } - closedir(d); - } else { - perror("opendir"); - } - return 0; -} diff --git a/src/c/hello-c/hello.c b/src/c/hello-c/hello.c new file mode 100644 index 0000000..c63efdb --- /dev/null +++ b/src/c/hello-c/hello.c @@ -0,0 +1,6 @@ +#include + +main() +{ + printf("Hello C\n"); +} diff --git a/src/c/list-dir/dir b/src/c/list-dir/dir new file mode 100755 index 0000000..7757a29 Binary files /dev/null and b/src/c/list-dir/dir differ diff --git a/src/c/list-dir/dir.c b/src/c/list-dir/dir.c new file mode 100644 index 0000000..05803fd --- /dev/null +++ b/src/c/list-dir/dir.c @@ -0,0 +1,17 @@ +#include +#include + +int main() { + DIR *d; + struct dirent *dir; + d = opendir("."); + if (d) { + while ((dir = readdir(d)) != NULL) { + printf("%s\n", dir->d_name); + } + closedir(d); + } else { + perror("opendir"); + } + return 0; +} diff --git a/src/c/main b/src/c/main deleted file mode 100755 index 37336e8..0000000 Binary files a/src/c/main and /dev/null differ diff --git a/src/c/main.c b/src/c/main.c deleted file mode 100644 index 30d5c61..0000000 --- a/src/c/main.c +++ /dev/null @@ -1,25 +0,0 @@ -#include - -// Function that tries to change a number without pointer -void noPointerChange(int num) { - num = 100; // Changes local copy only -} - -// Function that changes a number using pointer -void pointerChange(int *numPtr) { - *numPtr = 100; // Changes original value through pointer -} - -int main() { - int value = 50; - - printf("Before noPointerChange: %d\n", value); - noPointerChange(value); - printf("After noPointerChange: %d\n", value); // value unchanged - - printf("Before pointerChange: %d\n", value); - pointerChange(&value); - printf("After pointerChange: %d\n", value); // value changed - - return 0; -} diff --git a/src/c/main2 b/src/c/main2 deleted file mode 100755 index c35260e..0000000 Binary files a/src/c/main2 and /dev/null differ diff --git a/src/c/main2.c b/src/c/main2.c deleted file mode 100644 index c63efdb..0000000 --- a/src/c/main2.c +++ /dev/null @@ -1,6 +0,0 @@ -#include - -main() -{ - printf("Hello C\n"); -} diff --git a/src/c/makefile/Makefile b/src/c/makefile/Makefile new file mode 100644 index 0000000..e7d3f1d --- /dev/null +++ b/src/c/makefile/Makefile @@ -0,0 +1,16 @@ +# Minimal Makefile to compile main.c into an executable named main + +CC = gcc +CFLAGS = -Wall -Wextra -O2 + +all: main + +main: main.c + $(CC) $(CFLAGS) -o main main.c + +test: main + @echo -n "main.c test............................" + @./main >/dev/null 2>&1 && echo "OK" || echo "FAILED" + +clean: + rm -f main diff --git a/src/c/makefile/main b/src/c/makefile/main new file mode 100755 index 0000000..8d130a1 Binary files /dev/null and b/src/c/makefile/main differ diff --git a/src/c/makefile/main.c b/src/c/makefile/main.c new file mode 100644 index 0000000..e0d7aba --- /dev/null +++ b/src/c/makefile/main.c @@ -0,0 +1,8 @@ +#include + +int +main() +{ + printf("Hello, Makefile!\n"); + return 0; +} diff --git a/src/c/pointer-example/pointer_example.c b/src/c/pointer-example/pointer_example.c new file mode 100644 index 0000000..30d5c61 --- /dev/null +++ b/src/c/pointer-example/pointer_example.c @@ -0,0 +1,25 @@ +#include + +// Function that tries to change a number without pointer +void noPointerChange(int num) { + num = 100; // Changes local copy only +} + +// Function that changes a number using pointer +void pointerChange(int *numPtr) { + *numPtr = 100; // Changes original value through pointer +} + +int main() { + int value = 50; + + printf("Before noPointerChange: %d\n", value); + noPointerChange(value); + printf("After noPointerChange: %d\n", value); // value unchanged + + printf("Before pointerChange: %d\n", value); + pointerChange(&value); + printf("After pointerChange: %d\n", value); // value changed + + return 0; +} diff --git a/src/c/shift b/src/c/shift deleted file mode 100755 index 6429b03..0000000 Binary files a/src/c/shift and /dev/null differ diff --git a/src/c/shift.c b/src/c/shift.c deleted file mode 100644 index c65b815..0000000 --- a/src/c/shift.c +++ /dev/null @@ -1,32 +0,0 @@ -#include - -void print_binary(unsigned char value) { - for (int i = 7; i >= 0; i--) { - printf("%d", (value >> i) & 1); - } - printf("\n"); -} - -int main() { - unsigned char value = 0; // start with all bits off - int bit; - - printf("Starting value: "); - print_binary(value); - - while (1) { - printf("Enter bit to toggle (0-7), or -1 to quit: "); - if (scanf("%d", &bit) != 1) break; - if (bit == -1) break; - if (bit < 0 || bit > 7) { - printf("Invalid bit.\n"); - continue; - } - - value ^= (1 << bit); // toggle the chosen bit - printf("Current value: "); - print_binary(value); - } - - return 0; -} diff --git a/src/c/temp-converter/ctof b/src/c/temp-converter/ctof new file mode 100755 index 0000000..7a47ff7 Binary files /dev/null and b/src/c/temp-converter/ctof differ diff --git a/src/c/temp-converter/ctof.c b/src/c/temp-converter/ctof.c new file mode 100644 index 0000000..e61cfcd --- /dev/null +++ b/src/c/temp-converter/ctof.c @@ -0,0 +1,44 @@ +#include +#include +#include // for errno +#include // for INT_MAX, INT_MIN + + +/* + F = C x 9/5 + 32 +*/ + +int +main(int argc, char *argv[]) +{ + + if (argc < 2) { + printf("Usage: %s number\n", argv[0]); + return 1; + } + + char *endptr; + + errno = 0; // reset errno + + long value = strtol(argv[1], &endptr, 10); // base 10 + + if (endptr == argv[1]) { + printf("Error: No digits were found\n"); + return 1; + } + if (*endptr != '\0') { + printf("Warning: Trailing characters after number: %s\n", endptr); + return 1; + } + if ((value == LONG_MAX || value == LONG_MIN) && errno == ERANGE) { + printf("Error: Number out of range\n"); + return 1; + } + + float fah = value * 9/5 + 32; + + printf("Fahrenheit: %0.f\n", fah); + + return 0; +} -- cgit v1.2.3