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.
/* 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
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.
Related files
- cC — Hello WorldThe classic hello-world in C — an include, main, and printf — for testing highlighters, C compilers, and parsers against the canonical first program.

- cppC++ — Hello WorldThe classic hello-world in C++ — iostream and std::cout — for testing highlighters, C++ compilers, and parsers.

- cppC++ — Series (class template, STL)A realistic C++ snippet with a class template, STL algorithms (max_element, accumulate), std::move, and range handling — for testing highlighters, g++/clang++, and parsers against real templates.

- cssCSS — Component styles (variables, flexbox, keyframes)A realistic component stylesheet using custom properties, flexbox, a fluid clamp() font size, color-mix(), a keyframe animation, and a media query — for testing CSS parsers, linters (stylelint), and highlighters.

- cssCSS — Hello WorldA minimal stylesheet that centres a heading with grid — the simplest useful CSS file for testing highlighters, CSS parsers, and minifiers.

- goGo — Hello WorldThe classic hello-world in Go — package main, an import, and fmt.Println, tab-indented like gofmt — for testing highlighters, the Go compiler, and parsers.

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