Hash Table in C — Implementation with Chaining (djb2)

A hash table maps keys to storage slots in near-constant time: run the key through a hash function, take the result modulo the table size, and that’s the index where the key lives. It’s the data structure behind Python dicts, Java HashMaps, and database indexes — and one of the most-asked interview topics in C, …

K&R C Chapter 1 Exercise Solutions — A Tutorial Introduction

Chapter 1: A Tutorial Introduction is where K&R C begins — and it moves faster than most C books. By exercise 1-8 you are counting characters by category; by 1-13 you are drawing histograms; by 1-22 you are folding long lines. The chapter uses only a tiny subset of C deliberately: loops, if/else, basic functions, …

C Program to Check File Size – fseek/ftell and stat()

There are two standard ways to check file size in C: the portable fseek()/ftell() method that works with any FILE pointer, and the POSIX stat() method that reads file metadata without opening the file. This page covers both, with complete working programs, a comparison table, and when to use each. Method 1 — fseek() and …

Dining Philosophers Problem in C – pthreads and Deadlock Prevention

The Dining Philosophers problem is a classic synchronization puzzle introduced by Edsger Dijkstra to illustrate deadlock and resource contention. Five philosophers sit at a round table with a single fork between each pair of neighbors — five forks total. Each philosopher alternates between thinking and eating, but eating requires picking up both the fork on …

C Program to Print Prime Numbers in a Given Range – Trial Division and Sieve

This C program generates and prints all prime numbers in a given range and reports the total count. It uses an efficient is_prime() function with a √n bound, plus a Sieve of Eratosthenes for cases where you need all primes up to a large limit. Trial Division — Check Each Number in the Range For …

Infix to Prefix Conversion in C – Stack Algorithm with Code

Infix to prefix conversion in C turns an everyday expression like (A+B)*C into its prefix (Polish notation) form *+ABC, where every operator comes before its operands. Compilers and expression evaluators use prefix and postfix forms because they need no parentheses and no precedence rules to evaluate — the structure is unambiguous. The standard algorithm is …