/* =========================
========================= */
/* =========================
========================= */
/* =========================
========================= */
void printStudent(struct Student s);
void changeAge(struct Student *s, int newAge);
void changeGrade(struct Student *s, float newGrade);
void swap(int *a, int *b);
void saveStudent(struct Student s);
/* =========================
========================= */
/* -------------------------
------------------------- */
printf("=== BASIC TYPES ===\n");
printf("Age: %d\n", age);
printf("Height: %.2f\n", height);
printf("Price: %.2f\n", price);
printf("Letter: %c\n", letter);
printf("\n=== SIZEOF ===\n");
printf("int = %zu bytes\n", sizeof(int));
printf("float = %zu bytes\n", sizeof(float));
printf("double = %zu bytes\n", sizeof(double));
printf("char = %zu byte\n", sizeof(char));
printf("MAX_AGE = %d\n", MAX_AGE);
/* -------------------------
------------------------- */
printf("\n=== POINTER ===\n");
printf("number = %d\n", number);
printf("*ptr = %d\n", *ptr);
printf("address = %p\n", (void *)ptr);
/* Change number through pointer */
printf("number after *ptr = 50: %d\n", number);
/* -------------------------
------------------------- */
printf("\n=== STRINGS ===\n");
// string functions have safer version with the `strn` prefix
char name1[50] = "Alice";
// strncpy(destination, source, sizeof(destination) - 1);
// destination[sizeof(destination) - 1] = '\0';
printf("name1 = %s\n", name1);
printf("name2 = %s\n", name2);
printf("Length of name1 = %zu\n", strlen(name1));
if (strcmp(name1, name2) == 0) {
puts("name1 and name2 are equal.");
puts("name1 and name2 are different.");
/* -------------------------
------------------------- */
printf("\n=== INPUT ===\n");
printf("Enter your age: ");
printf("You entered: %d\n", age);
/* -------------------------
------------------------- */
printf("\n=== ENUM + SWITCH ===\n");
enum Gender gender = MALE;
/* -------------------------
------------------------- */
printf("\n=== STRUCT ===\n");
strcpy(student.name, "John");
/* -------------------------
FUNCTION WITH STRUCT POINTER
------------------------- */
printf("\n=== FUNCTION + STRUCT POINTER ===\n");
changeGrade(&student, 18.0f);
/* -------------------------
------------------------- */
printf("\n=== FUNCTION ===\n");
printf("10 + 20 = %d\n", result);
/* -------------------------
------------------------- */
printf("\n=== FUNCTION + POINTERS ===\n");
printf("Before swap: a=%d b=%d\n", a, b);
printf("After swap: a=%d b=%d\n", a, b);
/* -------------------------
------------------------- */
printf("\n=== TABLE ===\n");
for (int i = 0; i < 5; i++) {
printf("numbers[%d] = %d\n", i, numbers[i]);
/* -------------------------
------------------------- */
printf("\n=== MALLOC ===\n");
dynamicNumbers = malloc(size * sizeof(int));
if (dynamicNumbers == NULL) {
puts("Memory allocation failed.");
for (int i = 0; i < size; i++) {
dynamicNumbers[i] = (i + 1) * 10;
for (int i = 0; i < size; i++) {
printf("%d ", dynamicNumbers[i]);
/* -------------------------
------------------------- */
printf("\n=== RANDOM ===\n");
/* Initialize random generator */
srand((unsigned int)time(NULL));
for (int i = 0; i < 5; i++) {
int randomNumber = rand() % 100;
printf("Random number: %d\n", randomNumber);
/* -------------------------
------------------------- */
printf("\n=== FILE ===\n");
printf("\nProgram finished.\n");
/* =========================
========================= */
/* =========================
========================= */
void swap(int *a, int *b)
/* =========================
========================= */
void printStudent(struct Student s)
printf("Name: %s\n", s.name);
printf("Age: %d\n", s.age);
printf("Grade: %.2f\n", s.grade);
/* =========================
========================= */
void changeAge(struct Student *s, int newAge)
/* =========================
========================= */
void changeGrade(struct Student *s, float newGrade)
/* =========================
========================= */
void saveStudent(struct Student s)
/* Open file for writing */
file = fopen("student.txt", "w");
puts("Could not open file.");
fprintf(file, "Name: %s\n", s.name);
fprintf(file, "Age: %d\n", s.age);
fprintf(file, "Grade: %.2f\n", s.grade);
puts("Student saved to student.txt");
/* =========================
========================= */
/* Open file for reading */
file = fopen("student.txt", "r");
puts("Could not open file.");
while (fgets(line, sizeof(line), file) != NULL) {
fseek(file, 0, SEEK_END);
/* Get current position */
long position = ftell(file);
printf("\nFile size: %ld bytes\n", position);