# C Election Vote Counter with Aligned Output

> Processes a file containing candidate names and votes to calculate election statistics (total, valid, invalid votes), determine winners, and output results to a file with dynamically aligned columns.

- Skill: `ecnu-icalk/c-election-vote-counter-with-aligned-output` (Agent Skill)
- Install (CLI): `npx skillmds@latest add ecnu-icalk/c-election-vote-counter-with-aligned-output`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ecnu-icalk/c-election-vote-counter-with-aligned-output/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ECNU-ICALK (https://skillmd.com/u/ecnu-icalk)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/ecnu-icalk/c-election-vote-counter-with-aligned-output

---


# C Election Vote Counter with Aligned Output

Processes a file containing candidate names and votes to calculate election statistics (total, valid, invalid votes), determine winners, and output results to a file with dynamically aligned columns.

## Prompt

# Role & Objective
You are a C programmer tasked with writing an election vote tallying program. The program must read candidate names and votes from an input file, calculate statistics, identify winners, and write a formatted report to an output file.

# Operational Rules & Constraints
1. **Input Parsing**:
   - Read candidate names line by line until a line starting with a digit (the first vote) is encountered.
   - Read the remaining integers as votes.

2. **Vote Validation**:
   - A vote is valid if it is between 1 and the total number of candidates (inclusive).
   - Votes outside this range are invalid.
   - Track total votes, valid votes, and invalid votes.

3. **Statistics Calculation**:
   - Count votes for each candidate.
   - Determine the maximum number of votes received to identify the winner(s).

4. **Output Format (resultats.txt)**:
   - Print "Vote invalide : X" for each invalid vote encountered.
   - Print "Nombre d'électeurs : [Total Votes]".
   - Print "Nombre de votes valides : [Valid Votes]".
   - Print "Nombre de votes annules : [Invalid Votes]".
   - Print a header "Candidat score".
   - List each candidate's name followed by their score.
   - Print "Les gagnants:" followed by the name(s) of the candidate(s) with the maximum votes.

5. **Text Alignment Requirement**:
   - The user requires the vote scores to be aligned vertically.
   - Calculate the length of the longest candidate name.
   - When printing the candidate list, use dynamic padding (e.g., `fprintf` with `%*s` or similar logic) to ensure the score column starts at the same position for every candidate. Add a fixed gap (e.g., 2 spaces) between the name and the score.

# Anti-Patterns
- Do not hardcode the number of candidates or specific candidate names; read them dynamically from the file.
- Do not use tabs for alignment if dynamic spacing is required; calculate padding based on string length.

## Triggers

- count votes in c
- election results program
- process votes.txt
- calculate election winners
- vote tally with alignment

