Continue in C Programming: Master Loop Control

Learn to use continue in c programming effectively. Our guide explains its syntax, loop behavior, common mistakes, and best practices with practical code

continue in c programmingc languageloop control statementsc tutorialprogramming guide

You're probably here because you wrote a loop, dropped in continue, ran the program, and got one of two outcomes.

Either it worked and you felt like a wizard.

Or the loop started acting weird, skipped too much, or spun forever like it had personal issues.

That's normal. continue in C looks tiny, but it changes control flow in ways that trip up a lot of beginners, especially when switching between for and while loops. Once you really understand it, though, it becomes one of those tools you reach for all the time when filtering bad input, ignoring special cases, or keeping loop logic clean.

Skipping Steps Without Stopping the Show

Say you're processing a list of user records. Most entries are valid. A few are missing fields, a few are malformed, and a few look like someone smashed the keyboard and hit submit anyway.

You don't want to kill the whole loop because one record is junk. You just want to skip that one and keep going. That's exactly the kind of moment where continue earns its keep in continue in C programming.

Imagine checking guests into an event. If one person forgot their ID, you don't shut down the entrance. You wave them aside and move to the next person. continue does that for loop iterations.

c
for (int i = 0; i < total_records; i++) {    if (!is_valid(records[i])) {        continue;    }
process_record(records[i]);

}

That one line says, “This item isn't usable. Skip the rest of this pass and move on.”

When loop behavior starts feeling slippery, drawing the path helps. Converting code flow into a diagram can make these jumps much easier to reason about, and a guide like is handy when your mental model and your actual control flow stop matching.

Practical rule: Use continue when you want to reject one item, not abandon the whole job.

What Is the Continue Statement Really

continue is the skip track button of loops.

It doesn't stop the playlist. It doesn't exit the loop. It just says, “I'm done with this iteration. Start the next one.”

An infographic explaining the purpose, analogy, and impact of the continue statement in computer programming loops.

C has had this kind of compact control flow from early on. The language was created by Dennis Ritchie at Bell Labs in 1972, and by 1978, Kernighan and Ritchie's The C Programming Language helped standardize how programmers learned and used core features like loop control. That history matters because continue still works across C's three core loop types, for, while, and do-while, where it skips the rest of the current iteration without ending the loop, as described in .

Continue vs break

This is the first distinction you need burned into memory.

StatementWhat it does
continueSkips the rest of the current iteration
breakExits the loop entirely

That difference sounds simple, but in real code it changes everything.

c
for (int i = 1; i <= 5; i++) {    if (i == 3) {        continue;    }    printf("%d ", i);}

Output:

c
1 2 4 5

The loop keeps going. It just skips printing 3.

Now compare that with break:

c
for (int i = 1; i <= 5; i++) {    if (i == 3) {        break;    }    printf("%d ", i);}

Output:

c
1 2

Game over at 3.

Why developers use it

continue is useful when the “bad case” is easier to identify than the “good case.”

Instead of wrapping the whole loop body in an if, you can reject early and keep the main path cleaner.

c
for (int i = 0; i < count; i++) {    if (numbers[i] < 0) {        continue;    }
printf(&quot;%d\n&quot;, numbers[i]);

}

That reads nicely. “Ignore negatives. Process the rest.”

If you're still building your intuition for what a snippet does before you run it, can help you slow the logic down and inspect it line by line.

How Continue Behaves in Different Loops

At this point, people get burned.

The big confusion in continue in C programming isn't the keyword itself. It's that continue does not resume the same way in every loop type. Tutorials often blur that distinction, but the important gap is this: in for loops, the update step still runs after continue, while in while and do-while, control goes back to the condition check. That control-flow difference is called out in .

Here's a visual before we get into code.

Flowchart illustrating how the continue statement affects execution flow in for, while, and do-while loops.

Continue in a for loop

A for loop has three moving parts packed into one line:

  1. Initialization
  2. Condition
  3. Update expression

When continue happens inside a for loop, C still performs the update expression before checking the condition again.

c
for (int i = 0; i < 5; i++) {    if (i == 2) {        continue;    }
printf(&quot;%d &quot;, i);

}

Output:

c
0 1 3 4

When i == 2, the printf is skipped. Then i++ still happens. Then the loop checks i < 5 again.

That's why for loops are usually safer for continue when your loop counter matters. The progression is built in.

continue in a for loop skips the body, not the update step.

A quick walkthrough in video form can help if you prefer seeing the execution order instead of reading it.

Continue in a while loop

A while loop behaves differently because there is no automatic update expression in the loop header. You control the loop variable manually.

c
int i = 0;

while (i < 5) { i++;

if (i == 3) {    continue;}
printf(&quot;%d &quot;, i);

}

Output:

c
1 2 4 5

This works because i++ happens before continue.

Now look at the bug version:

c
int i = 0;

while (i < 5) { if (i == 3) { continue; }

printf(&quot;%d &quot;, i);i++;

}

When i becomes 3, the loop hits continue before i++. So i stays 3 forever. Congratulations, you've invented a tiny heating device for your CPU.

Continue in a do-while loop

A do-while loop runs the body first, then checks the condition.

c
int i = 0;

do { i++;

if (i == 3) {    continue;}
printf(&quot;%d &quot;, i);

} while (i < 5);

Output:

c
1 2 4 5

Here, continue jumps to the condition check at the bottom of the loop.

The short version

Loop typeAfter continue
forRuns the update expression, then checks condition
whileJumps to condition check
do-whileJumps to condition check at the bottom

If you remember only one thing, remember this: for loops still advance their update step after continue. while loops only advance if your code already did it.

Using Continue with Nested Loops and Switch Cases

Once a single loop makes sense, the next confusion usually shows up in nested logic.

You put continue inside an inner loop and expect the whole outer loop to move on. It won't. continue only affects the nearest enclosing loop.

A computer screen displaying C programming code illustrating how the continue statement skips to the next iteration.

Nested loop behavior

c
for (int row = 0; row < 3; row++) {    for (int col = 0; col < 3; col++) {        if (col == 1) {            continue;        }
    printf(&quot;row=%d col=%d\n&quot;, row, col);}

}

This skips only col == 1 in the inner loop. The outer row loop keeps going as usual.

That means continue is very local. It doesn't mean “skip everything related to this big block.” It means “skip the rest of this iteration of this loop right here.”

What about switch

This one confuses a lot of people because break has a special relationship with switch, but continue doesn't.

If you place a switch inside a loop and hit continue, it targets the surrounding loop, not the switch.

c
for (int i = 0; i < 5; i++) {    switch (i) {        case 2:            continue;        default:            printf("%d ", i);    }}

When i == 2, execution skips the rest of that loop iteration. It does not behave like “go to the next switch case.”

That's why it helps to map structures before editing them. If you bounce between code, pseudocode, and logic sketches, a guide on is a useful way to make nested control paths less sneaky.

If continue is inside two blocks, ask one question: which loop is closest? That's the one it affects.

Practical Code Examples and Use Cases

Syntax is nice. Useful code is nicer.

Here are a few places where continue feels natural instead of forced.

Skipping negative values in a sum

Suppose you only want to total non-negative readings.

c
#include <stdio.h>

int main() { int values[] = {10, -3, 7, -1, 5}; int sum = 0;

for (int i = 0; i &lt; 5; i++) {    if (values[i] &lt; 0) {        continue;    }
    sum += values[i];}
printf(&quot;Sum = %d\n&quot;, sum);return 0;

}

Why continue works well here: the rejection rule is short, and the main path stays clean.

Ignoring comment lines in text input

A common pattern in config-style data is skipping blank lines or comments.

c
#include <stdio.h>#include <string.h>

int main() { char *lines[] = { "# app config", "host=localhost", "", "port=8080", "# debug=false" };

for (int i = 0; i &lt; 5; i++) {    if (lines[i][0] == &#39;#&#39; || strlen(lines[i]) == 0) {        continue;    }
    printf(&quot;Processing: %s\n&quot;, lines[i]);}
return 0;

}

That reads almost like plain English: if it's a comment or blank, skip it.

Skipping punctuation while scanning text

You might want to process only letters and digits.

c
#include <stdio.h>#include <ctype.h>

int main() { char text[] = "Hi, Dev! C is fun.";

for (int i = 0; text[i] != &#39;\0&#39;; i++) {    if (!isalnum((unsigned char)text[i])) {        continue;    }
    putchar(text[i]);}
return 0;

}

Output:

c
HiDevCisfun

When it feels elegant

continue usually helps when:

  • The skip condition is easy to spot: bad input, blank data, unwanted characters.
  • The main action should stay visually central: process valid data without wrapping everything in another if.
  • You're filtering, not branching heavily: once the loop starts looking like an airport security line with six exits, readability drops.

A good gut check is simple. If the code after continue is the “happy path,” the statement probably belongs there.

Common Mistakes and How to Avoid Them

The classic continue bug in C isn't subtle. It's loud, annoying, and sometimes infinite.

If you've ever had a program freeze because one variable never changed, this section is for you.

A visual guide comparing common mistakes and best practices when using the continue statement in computer programming loops.

The bug you should spot fast

c
int i = 0;

while (i < 5) { if (i == 2) { continue; }

printf(&quot;%d\n&quot;, i);i++;

}

The problem is i never changes when it becomes 2. The loop keeps checking i == 2, keeps continuing, and never reaches i++.

Microsoft's C documentation notes that continue transfers control to the next iteration of the nearest enclosing loop, and in a for loop the loop-expression update still runs before the condition is checked again. That's a key reason for loops often survive this mistake more gracefully than while loops, as explained in .

The fixed version

c
int i = 0;

while (i < 5) { i++;

if (i == 2) {    continue;}
printf(&quot;%d\n&quot;, i);

}

Now the variable changes before the skip can happen.

Three mistakes I see a lot

  • Skipping the update: This is the infinite loop trap. It shows up mostly in while loops.
  • Expecting it to exit nested structures: It won't break out of every loop around it.
  • Using it too many times: One continue can clarify a loop. Several can turn it into a maze.

Your future self reads your control flow with less context than current-you. Write for that person.

If you're debugging messy branching logic, is a practical way to inspect the paths you think are happening versus the ones C is taking.

And yes, programmers do sometimes create infinite loops by accident. We call that “letting the computer think.”

Is Continue Always the Best Choice

Nope.

continue is useful, but it isn't automatically the cleanest option. One C-focused source notes that it's most helpful when a loop body is long or highly nested because it can reduce extra if-else indentation. The same source also raises the more mature question many beginner tutorials skip: when should you refactor instead for readability and maintenance, as discussed in .

When continue helps

It shines when the loop has a quick reject rule.

c
for (int i = 0; i < count; i++) {    if (!is_valid(items[i])) {        continue;    }
save(items[i]);

}

That's tidy. The intent is obvious.

When continue starts to smell

If your loop looks like this, pause:

c
for (int i = 0; i < count; i++) {    if (items[i] == NULL) continue;    if (!is_ready(items[i])) continue;    if (is_duplicate(items[i])) continue;    if (!has_permission(items[i])) continue;
process(items[i]);

}

Is it legal C? Yes.

Is it fun to maintain? Not really.

A few alternatives often read better:

  • Guard with a helper function: Move validation into should_process(item).
  • Refactor the body: Put the core logic in a well-named function.
  • Use a clear boolean: Compute eligibility first, then act.
c
for (int i = 0; i < count; i++) {    if (!should_process(items[i])) {        continue;    }
process(items[i]);

}

Or even:

c
for (int i = 0; i < count; i++) {    if (should_process(items[i])) {        process(items[i]);    }}

That second version is sometimes better. Not because continue is bad, but because readability wins.

If you want to level up from “my code works” to “my code is easy to live with,” is a useful next step.

A simple challenge for you: take a loop with two or three continue statements and rewrite it in two ways, once with a helper function and once with a single clear if. Then ask which one your teammate would understand faster on a tired Friday afternoon. That's usually the right answer.


If you want a faster way to inspect loop logic, debug tricky control flow, explain code, and refactor messy iterations into cleaner C, try . It brings coding help, research, writing, and AI-assisted problem solving into one workspace, which is handy when a tiny keyword like continue turns into a surprisingly large debugging session.

*

Explorer les fonctionnalités de Zemith

Toute l'IA top. Un abonnement.

ChatGPT, Claude, Gemini, DeepSeek, Grok et 25+ modèles

OpenAI
OpenAI
Anthropic
Anthropic
Google
Google
DeepSeek
DeepSeek
xAI
xAI
Perplexity
Perplexity
OpenAI
OpenAI
Anthropic
Anthropic
Google
Google
DeepSeek
DeepSeek
xAI
xAI
Perplexity
Perplexity
Meta
Meta
Mistral
Mistral
MiniMax
MiniMax
Recraft
Recraft
Stability
Stability
Kling
Kling
Meta
Meta
Mistral
Mistral
MiniMax
MiniMax
Recraft
Recraft
Stability
Stability
Kling
Kling
25+ modèles · changez à tout moment

Toujours active, IA en temps réel.

Voix + partage d'écran · réponses instantanées

LIVE
Vous

Quelle est la meilleure façon d'apprendre une nouvelle langue ?

Zemith

L'immersion et la répétition espacée fonctionnent le mieux. Essayez de consommer des médias dans votre langue cible quotidiennement.

Voix + partage d'écran · L'IA répond en temps réel

Génération d'images

Flux, Nano Banana, Ideogram, Recraft + plus

AI generated image
1:116:99:164:33:2

Écrivez à la vitesse de la pensée.

Auto-complétion IA, réécriture et expansion sur commande

Bloc-notes IA

Tout document. Tout format.

PDF, URL ou YouTube → chat, quiz, podcast et plus

📄
research-paper.pdf
PDF · 42 pages
📝
Quiz
Interactif
Prêt

Création vidéo

Veo, Kling, MiniMax, Sora + plus

AI generated video preview
5s10s720p1080p

Synthèse vocale

Voix IA naturelles, 30+ langues

Génération de code

Écrire, déboguer et expliquer du code

def analyze(data):
summary = model.predict(data)
return f"Result: {summary}"

Chat avec documents

Téléchargez des PDF, analysez le contenu

PDFDOCTXTCSV+ more

Votre IA dans votre poche.

Accès complet sur iOS et Android · synchronisé partout

Télécharger l'appli
Tout ce que vous aimez, dans votre poche.

Votre canevas IA infini.

Chat, image, vidéo et outils de mouvement — côte à côte

Workflow canvas showing Prompt, Image Generation, Remove Background, and Video nodes connected together

Économisez des heures de travail et de recherche

Tarification simple et abordable

Adopté par des équipes chez

Google logoHarvard logoCambridge logoNokia logoCapgemini logoZapier logo
OpenAI
OpenAI
Anthropic
Anthropic
Google
Google
DeepSeek
DeepSeek
xAI
xAI
Perplexity
Perplexity
MiniMax
MiniMax
Kling
Kling
Recraft
Recraft
Meta
Meta
Mistral
Mistral
Stability
Stability
OpenAI
OpenAI
Anthropic
Anthropic
Google
Google
DeepSeek
DeepSeek
xAI
xAI
Perplexity
Perplexity
MiniMax
MiniMax
Kling
Kling
Recraft
Recraft
Meta
Meta
Mistral
Mistral
Stability
Stability
4.6
Plus de 30 000 utilisateurs
Sécurité de niveau entreprise
Annulez à tout moment

Gratuit

$0
gratuit pour toujours
 

Aucune carte de crédit requise

  • 100 crédits par jour
  • 3 modèles d'IA à essayer
  • Chat IA basique
Le plus populaire

Plus

14.99par mois
Facturé annuellement
Environ 2 mois Gratuits avec le Plan Annuel
  • 1 000 000 crédits/mois
  • 25+ modèles d'IA — GPT, Claude, Gemini, Grok et plus
  • Agent Mode avec recherche web, outils informatiques et plus
  • Creative Studio : génération d'images et de vidéos
  • Project Library : discutez avec des documents, sites web et YouTube, génération de podcasts, fiches de révision, rapports et plus
  • Workflow Studio et FocusOS

Professionnel

24.99par mois
Facturé annuellement
Environ 4 mois Gratuits avec le Plan Annuel
  • Tout ce qui est dans Plus, plus :
  • 2 100 000 crédits/mois
  • Modèles exclusifs Pro (Claude Opus, Grok 4, Sonar Pro)
  • Motion Tools et Max Mode
  • Premier accès aux dernières fonctionnalités
  • Accès aux offres supplémentaires
Fonctionnalités
Free
Plus
Professional
100 Crédits Quotidiens
1 000 000 Crédits Mensuels
2 100 000 Crédits Mensuels
3 Modèles Gratuits
Accès aux Modèles Plus
Accès aux Modèles Pro
Débloquer toutes les fonctionnalités
Débloquer toutes les fonctionnalités
Débloquer toutes les fonctionnalités
Accès à FocusOS
Accès à FocusOS
Accès à FocusOS
Agent Mode avec Outils
Agent Mode avec Outils
Agent Mode avec Outils
Outil de Recherche Approfondie
Outil de Recherche Approfondie
Outil de Recherche Approfondie
Accès aux Fonctionnalités Creative
Accès aux Fonctionnalités Créatives
Accès aux Fonctionnalités Créatives
Génération de Vidéo
Génération Vidéo (Via Crédits à la Demande)
Génération Vidéo (Via Crédits à la Demande)
Accès à Project Library
Accès aux Fonctionnalités de la Bibliothèque de Documents
Accès aux Fonctionnalités de la Bibliothèque de Documents
0 Sources par Dossier de Bibliothèque
50 Sources par Dossier de Bibliothèque
50 Sources par Dossier de Bibliothèque
Utilisation illimitée du modèle Gemini 2.5 Flash Lite
Utilisation illimitée du modèle Gemini 2.5 Flash Lite
Utilisation illimitée du modèle GPT 5 Mini
Accès à Document vers Podcast
Accès au Document en Podcast
Accès au Document en Podcast
Synchronisation Automatique des Notes
Synchronisation Automatique des Notes
Synchronisation Automatique des Notes
Synchronisation Automatique du Tableau Blanc
Synchronisation Automatique du Tableau Blanc
Synchronisation Automatique du Tableau Blanc
Accès aux On-Demand Credits
Accès aux Crédits à la Demande
Accès aux Crédits à la Demande
Accès à Computer Tool
Accès à Computer Tool
Accès à Computer Tool
Accès à Workflow Studio
Accès à Workflow Studio
Accès à Workflow Studio
Accès à Motion Tools
Accès à Motion Tools
Accès à Motion Tools
Accès à Max Mode
Accès à Max Mode
Accès à Max Mode
Définir le Modèle par Défaut
Définir le Modèle par Défaut
Définir le Modèle par Défaut
Accès aux dernières fonctionnalités
Accès aux dernières fonctionnalités
Accès aux dernières fonctionnalités

Ce que disent nos utilisateurs

Great Tool after 2 months usage

"I love the way multiple tools they integrated in one platform. Going in the right direction."

simplyzubair

Best in Kind!

"The quality of data and sheer speed of responses is outstanding. I use this app every day."

barefootmedicine

Simply awesome

"The credit system is fair, models are perfect, and the discord is very responsive. Quite awesome."

MarianZ

Great for Document Analysis

"Just works. Simple to use and great for working with documents. Money well spent."

yerch82

Great AI site with accessible LLMs

"The organization of features is better than all the other sites — even better than ChatGPT."

sumore

Excellent Tool

"It lives up to the all-in-one claim. All the necessary functions with a well-designed, easy UI."

AlphaLeaf

Well-rounded platform with solid LLMs

"The team clearly puts their heart and soul into this platform. Really solid extra functionality."

SlothMachine

Best AI tool I've ever used

"Updates made almost daily, feedback is incredibly fast. Just look at the changelogs — consistency."

reu0691

Modèles Disponibles
Free
Plus
Professional
OpenAI
GPT 5.4 Nano
GPT 5.4 Nano
GPT 5.4 Nano
GPT 5.4 Mini
GPT 5.4 Mini
GPT 5.4 Mini
GPT 5.6 Luna
GPT 5.6 Luna
GPT 5.6 Luna
GPT 5.6 Terra
GPT 5.6 Terra
GPT 5.6 Terra
GPT 5.6 Sol
GPT 5.6 Sol
GPT 5.6 Sol
GPT 4o Mini
GPT 4o Mini
GPT 4o Mini
GPT 4o
GPT 4o
GPT 4o
Google
Gemini 2.5 Flash Lite
Gemini 2.5 Flash Lite
Gemini 2.5 Flash Lite
Gemini 3.1 Flash Lite
Gemini 3.1 Flash Lite
Gemini 3.1 Flash Lite
Gemini 3 Flash
Gemini 3 Flash
Gemini 3 Flash
Gemini 3.1 Pro
Gemini 3.1 Pro
Gemini 3.1 Pro
Gemini 3.5 Flash
Gemini 3.5 Flash
Gemini 3.5 Flash
Anthropic
Claude 4.5 Haiku
Claude 4.5 Haiku
Claude 4.5 Haiku
Claude 5 Sonnet
Claude 5 Sonnet
Claude 5 Sonnet
Claude 4.8 Opus
Claude 4.8 Opus
Claude 4.8 Opus
DeepSeek
DeepSeek v4 Flash
DeepSeek v4 Flash
DeepSeek v4 Flash
DeepSeek v4 Pro
DeepSeek v4 Pro
DeepSeek v4 Pro
Mistral
Mistral Small 3.1
Mistral Small 3.1
Mistral Small 3.1
Mistral Medium
Mistral Medium
Mistral Medium
Mistral 3 Large
Mistral 3 Large
Mistral 3 Large
Perplexity
Perplexity Sonar
Perplexity Sonar
Perplexity Sonar
Perplexity Sonar Pro
Perplexity Sonar Pro
Perplexity Sonar Pro
xAI
Grok 4.3
Grok 4.3
Grok 4.3
Grok 4.5
Grok 4.5
Grok 4.5
zAI
GLM 5.2
GLM 5.2
GLM 5.2
Alibaba
Qwen 3.7 Plus
Qwen 3.7 Plus
Qwen 3.7 Plus
Qwen 3.7 Max
Qwen 3.7 Max
Qwen 3.7 Max
Minimax
M 3
M 3
M 3
Moonshot
Kimi K2.6
Kimi K2.6
Kimi K2.6
Kimi K2.7 Code
Kimi K2.7 Code
Kimi K2.7 Code
Inception
Mercury 2
Mercury 2
Mercury 2