Skip to content

pc015.c

Problem Statement

Write a C program to reverse a string using a recursive function.

Metadata

Property Detail
Author Amit Dutta (amitdutta4255@gmail.com)
License MIT
Difficulty Beginner (index: 2 / 10)

Concepts

Beta Feature

This concept detection system is still in beta and may occasionally show incorrect or incomplete results.

  • Pointers
  • Recursion
  • Array

Actions

Raw View on GitHub

You can print or save this file by opening Raw and using your browser.

Source Code

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

void reverseString(char [], char *, char *);

int main() {
    char string[101], *p, *start, *end;
    printf("Enter the string (Max: 100 char): ");
    if(fgets(string, sizeof(string), stdin) == NULL) {
        printf("\nError reading input.");
        exit(1);
    }
    p = strchr(string, '\n');
    if(p) *p = '\0';
    printf("Before Reverse: %s", string);
    start = string;
    end = string + strlen(string) - 1;
    reverseString(string, start, end);
    printf("\nAfter reverse:  %s", string);
    return 0;
}

void reverseString(char str[], char *start, char *end) {
    if(start >= end) {
        return;
    }
    char temp;
    temp = *start;
    *start = *end;
    *end = temp;
    start++;
    end--;
    reverseString(str, start, end);
}

Explanation

Explain with AI

Copy the prompt below and paste it into any AI assistant.

    You are explaining a C programming code to a beginner.

    STRICT RULES:

    - Only use the given code. Do NOT assume anything not present.

    - Do NOT add extra examples.

    - Keep explanation clear and short.

    - If something is unclear, say "Not clear from code".

    - Follow the exact format below. Do NOT change headings.

    FORMAT:

    [START]

    ## What it does

    (Explain the overall purpose in 1-2 sentences)

    ## Step-by-step

    (Explain how the code works in steps, simple language)

    ## Key Concepts

    (List concepts like loop, condition, function, etc.)

    ## Notes

    (Mention any limitations, errors, or assumptions)

    [END]

    CODE (pc015.c):

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

    void reverseString(char [], char *, char *);

    int main() {
        char string[101], *p, *start, *end;
        printf("Enter the string (Max: 100 char): ");
        if(fgets(string, sizeof(string), stdin) == NULL) {
            printf("\nError reading input.");
            exit(1);
        }
        p = strchr(string, '\n');
        if(p) *p = '\0';
        printf("Before Reverse: %s", string);
        start = string;
        end = string + strlen(string) - 1;
        reverseString(string, start, end);
        printf("\nAfter reverse:  %s", string);
        return 0;
    }

    void reverseString(char str[], char *start, char *end) {
        if(start >= end) {
            return;
        }
        char temp;
        temp = *start;
        *start = *end;
        *end = temp;
        start++;
        end--;
        reverseString(str, start, end);
    }