Removing quotes from a string

Removing quotes from a string

How to:

To remove quotes from a string in C, we traverse the string, copying characters that are not quotes into a new string. This process can be tailored to remove either just the leading and trailing quotes or all quotes present in the string. Below is an illustrative example that demonstrates both approaches:

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

// Function to remove all quotes from a string
void removeAllQuotes(char *source, char *dest) {
    while (*source) {
        if (*source != '"' && *source != '\'') {
            *dest++ = *source;
    *dest = '\0'; // Null-terminate the destination string

// Function to remove just the leading and trailing quotes from a string
void removeEdgeQuotes(char *source, char *dest) {
    size_t len = strlen(source);
    if (source[0] == '"' || source[0] == '\'') source++, len--;
    if (source[len-1] == '"' || source[len-1] == '\'') len--;
    strncpy(dest, source, len);
    dest[len] = '\0'; // Null-terminate the destination string

int main() {
    char str1[] = "'Hello, World!'";
    char str2[] = "\"Programming in C\"";
    char noQuotes1[50];
    char noQuotes2[50];
    removeAllQuotes(str1, noQuotes1);
    printf("All Quotes Removed: %s\n", noQuotes1);
    removeEdgeQuotes(str2, noQuotes2);
    printf("Edge Quotes Removed: %s\n", noQuotes2);
    return 0;

Sample Output:

All Quotes Removed: Hello, World!
Edge Quotes Removed: Programming in C

These examples show how to handle both removal of all quotes present in the string and targeted removal of just the leading and trailing quotes.

Deep Dive

The concept of removing quotes from strings doesn’t have significant historical depth in C, beyond its ties to early text processing needs. The straightforward approach demonstrated here is versatile but lacks efficiency for very large strings or high-performance requirements, where in-place modification or more advanced algorithms might be preferred.

Alternatives, like using strpbrk to find quotes and moving the non-quote part of the string, can be more efficient but require a deeper understanding of pointers and memory management in C. Moreover, the emergence of regular expression libraries has provided a powerful toolset for string manipulation, including quote removal. However, these libraries, while powerful, add complexity and overhead that might not be necessary for simpler tasks. Consequently, the direct approach as shown, remains a valuable skill for C programmers, blending simplicity with the effectiveness for many common use-cases.