Skip to content
Novus Examples
c941 B

C — Linked list (structs, malloc, pointers)

A realistic C program: a singly linked list with a typedef struct, malloc/free memory management, pointer walking, and error handling — for testing highlighters, compilers, and static analysers.

Preview — first 46 linesc
/* A singly linked list of integers: a struct, malloc/free, and pointer walking. */
#include <stdio.h>
#include <stdlib.h>

typedef struct Node {
    int value;
    struct Node *next;
} Node;

static Node *push(Node *head, int value) {
    Node *node = malloc(sizeof(Node));
    if (node == NULL) {
        perror("malloc");
        exit(EXIT_FAILURE);
    }
    node->value = value;
    node->next = head;
    return node;
}

static long sum(const Node *head) {
    long total = 0;
    for (const Node *n = head; n != NULL; n = n->next) {
        total += n->value;
    }
    return total;
}

static void free_list(Node *head) {
    while (head != NULL) {
        Node *next = head->next;
        free(head);
        head = next;
    }
}

int main(void) {
    Node *list = NULL;
    for (int i = 1; i <= 5; i++) {
        list = push(list, i * i);
    }
    printf("sum of squares = %ld\n", sum(list));
    free_list(list);
    return 0;
}

Specifications

Language
C
Kind
realistic snippet
Lines
45
Encoding
UTF-8
Line Endings
LF

Testing contract

Expected to pass
Scenario
Compile the file, run it, and then run it again under a leak checker such as valgrind or ASan.
Expected result
It prints `sum of squares = 55` (1+4+9+16+25) and exits 0, and the leak checker reports zero leaks: every one of the five `malloc` calls is matched by a `free` in `free_list`. A malloc failure path calls `perror` and exits, so it is also a fixture for testing that the checker sees the error branch.

What is a .c file?

C (.c) is a plain-text source file for the C programming language — a low-level, statically typed, compiled language that maps closely to hardware. It underpins operating systems, embedded firmware, and language runtimes, using manual memory management, pointers, structs, and the preprocessor.

How to use this file

Use an example .c file to test syntax highlighters, C compilers (gcc, clang) and their diagnostics, static analysers, formatters (clang-format), and parser or highlighting tooling.

How to use this file for testing

“C — Linked list (structs, malloc, pointers)” is a deterministic Novus Examples fixture for Syntax highlighting, Code parsing, Editor testing. Idiomatic hello-world programs and realistic snippets across sixteen languages, exercising comments, string escapes, interpolation, numeric literals, and language keywords — for testing syntax highlighters, editor themes, and tree-sitter grammars.

Documented properties for this file: C · UTF-8 · LF. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.

Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such — expect parsers to fail loudly rather than silently accept them.

This is a short, known-correct source file. Run it through your syntax highlighter, linter, formatter, tree-sitter grammar, or parser, and open it in the in-browser editor to tweak and re-download. Each snippet exercises comments, string escapes, literals, and language keywords.

Code examples

cc linked-list.c -o prog && ./prog

Generated by generation/code_samples.py. Free for any use, no attribution required — license.