How to check if a string starts with a substring from an array of substrings in C

1 Answer

0 votes
#include <stdio.h>
#include <string.h>
#include <stdbool.h>

// Function to check if a string starts with a given prefix
bool startsWith(const char *string, const char *prefix) {
    // Compare the prefix with the start of the string
    size_t prefixLength = strlen(prefix);
    return strncmp(string, prefix, prefixLength) == 0;
}

// Function to check if the string starts with any substring from the array
bool startsWithAny(const char *string, const char *substrings[], size_t substringsSize) {
    for (size_t i = 0; i < substringsSize; ++i) {
        if (startsWith(string, substrings[i])) {
            return true;
        }
    }
    return false; // Return false if no substring matches
}

int main() {
    const char *string = "abcdefg";

    // Array of substrings
    const char *substrings[] = {"xy", "poq", "mnop", "abc", "rsuvw"};
    size_t substringsSize = sizeof(substrings) / sizeof(substrings[0]);

    // Check if the string starts with any substring from the array
    if (startsWithAny(string, substrings, substringsSize)) {
        printf("The string starts with a substring from the array.\n");
    } else {
        printf("The string does not start with any substring from the array.\n");
    }

    return 0;
}


/*
run:

The string starts with a substring from the array.

*/

 



answered Apr 3, 2025 by avibootz
...