Replace a Substring Within a String in C

In C, replacing a substring within a string requires manually locating the substring and modifying the original string since C lacks built-in functions for this operation. We can achieve this using standard functions like strstr(), strcpy(), strcat(), and string manipulation techniques.

In this tutorial, we will explore multiple ways to replace a substring within a string, with examples.


Examples of Replacing a Substring in C

1. Replacing a Substring Using strstr() and String Manipulation

In this example, we locate a substring using strstr(), extract parts of the original string, and construct a new string with the replacement.

main.c

</>
Copy
#include <stdio.h>
#include <string.h>

void replaceSubstring(char *str, const char *oldWord, const char *newWord) {
    char result[1000];  
    char *pos, temp[1000];
    int index = 0;
    int oldWordLen = strlen(oldWord);

    // Copy original string to temp
    strcpy(temp, str);
#include <stdio.h>
#include <string.h>

void replaceSubstring(char *str, const char *oldWord, const char *newWord) {
    char result[1000];  
    char *pos, temp[1000];
    int index = 0;
    int oldWordLen = strlen(oldWord);

    // Copy original string to temp
    strcpy(temp, str);

    while ((pos = strstr(temp, oldWord)) != NULL) {
        // Copy characters before the oldWord
        int lenBefore = pos - temp;
        strncpy(result + index, temp, lenBefore);
        index += lenBefore;

        // Copy the newWord
        strcpy(result + index, newWord);
        index += strlen(newWord);

        // Move past the oldWord in temp
        strcpy(temp, pos + oldWordLen);
    }
    
    // Copy the remaining part of temp
    strcpy(result + index, temp);
    
    // Copy result back to original string
    strcpy(str, result);
}

int main() {
    char str[1000] = "Hello world, welcome to the C world!";
    replaceSubstring(str, "world", "universe");
    printf("%s\n", str);
    return 0;
}    while ((pos = strstr(temp, oldWord)) != NULL) {
        // Copy characters before the oldWord
        int lenBefore = pos - temp;
        strncpy(result + index, temp, lenBefore);
        index += lenBefore;

        // Copy the newWord
        strcpy(result + index, newWord);
        index += strlen(newWord);

        // Move past the oldWord in temp
        strcpy(temp, pos + oldWordLen);
    }
    
    // Copy the remaining part of temp
    strcpy(result + index, temp);
    
    // Copy result back to original string
    strcpy(str, result);
}

int main() {
    char str[1000] = "Hello world, welcome to the C world!";
    replaceSubstring(str, "world", "universe");
    printf("%s\n", str);
    return 0;
}

Explanation:

  1. We define a function replaceSubstring() that replaces oldWord with newWord in the input string.
  2. strstr() is used to locate occurrences of oldWord within the input string.
  3. A temporary buffer result[] stores the modified string.
  4. The loop iterates over the input string, replacing occurrences of oldWord with newWord.
  5. The modified string is copied back to the original string.

Output:

Hello universe, welcome to the C universe!

Conclusion

In this tutorial, we explored different ways to replace a substring within a string in C:

  1. Using strstr() and string manipulation: Finds and replaces substrings using built-in functions.