this post was submitted on 24 Oct 2025
101 points (96.3% liked)

Programmer Humor

27092 readers
1599 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 2 years ago
MODERATORS
 

OK, first of all, I am not a programmer. (yes, I heard the "thank god") Perhaps I could make the top example simpler.

But anyway, I kind of like goto too much. I find it more intuitive to just jump around and re-use parts rather than think about how to do loops without too much nesting.

In high school, we only did Python. I really wanted to do goto in Python as well, but all I found was this April fools' goto module.

Now in college we're starting with C, and I am starting with Bad Habits^TM^.

Anyway, tagging every line was BASICally just for the joke, but it is useful to just jump to any random line.

you are viewing a single comment's thread
view the rest of the comments
[–] kryptonianCodeMonkey@lemmy.world 13 points 4 days ago* (last edited 3 days ago)

But anyway, I kind of like goto too much. I find it more intuitive to just jump around and re-use parts rather than think about how to do loops without too much nesting.

Might I introduce you to functions?

Need to write a prompt to the console and get an input? That could be a function. Need to check if a character matches some option(s)? That's could be a function. Need to run a specific conditional subroutine? That could be a function. And function names, done correctly, are their own documentation too.

You main function loop could look almost like pseudo code if you do it right.

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>

char* prompt_for_input(const char* prompt_message) {
    char temp[100];
    printf(prompt_message);
    fgets(temp, 100, stdin);
    temp[strlen(temp)-1] = '\0';
    char* input = malloc(strlen(temp));
    strcpy(input,temp);
    return input;
}

int string_to_int(char* input) {
    return (int)strtol(input, NULL, 10);
}

int prompt_for_loop_count() {
    char *input = prompt_for_input("\nI'll loop over this many times: ");
    int loop_count = string_to_int(input);
    free(input);
    return loop_count;
}

bool prompt_to_do_again(){
    char *input = prompt_for_input("Let's do that again!\nShallow we? (y/n): ");
    bool do_again = (strcmp(input, "y") == 0 || strcmp(input, "Y") == 0);
    free(input);
    return do_again;
}

void print_and_decrement_counter(int loops_remaining) {
    do {
        printf("Current = %d\n", loops_remaining);
        loops_remaining--;
    } while (loops_remaining > 0);
}

int main() {
    bool need_to_get_loop_count = true;
    printf("Hello.");
    while(need_to_get_loop_count) {
        int loops_remaining = prompt_for_loop_count();
        print_and_decrement_counter(loops_remaining);
        need_to_get_loop_count = prompt_to_do_again();
    }
    printf("\nBye\n\n");
}