C言語でmallocを使用せずに文字の出現をすべて削除する方法


方法1: 文字列を新しい文字列にコピーする この方法では、元の文字列から特定の文字を削除し、新しい文字列にコピーします。以下に例を示します。

#include <stdio.h>
void removeCharWithoutMalloc(char* str, char c) {
    int i, j;
    for (i = 0, j = 0; str[i] != '\0'; i++) {
        if (str[i] != c) {
            str[j++] = str[i];
        }
    }
    str[j] = '\0';
}
int main() {
    char str[] = "Hello, world!";
    char c = 'o';
    printf("Before: %s\n", str);
    removeCharWithoutMalloc(str, c);
    printf("After: %s\n", str);
    return 0;
}

上記のコードでは、removeCharWithoutMalloc関数を使用して文字列内の特定の文字を削除します。元の文字列は変更され、削除後の文字列が表示されます。

方法2: ポインタを使用して文字列を削除する この方法では、ポインタを使用して元の文字列内の特定の文字を削除します。以下に例を示します。

#include <stdio.h>
void removeCharWithoutMalloc(char* str, char c) {
    char* dst = str;
    while (*str) {
        if (*str != c) {
            *dst++ = *str;
        }
        str++;
    }
    *dst = '\0';
}
int main() {
    char str[] = "Hello, world!";
    char c = 'o';
    printf("Before: %s\n", str);
    removeCharWithoutMalloc(str, c);
    printf("After: %s\n", str);
    return 0;
}

上記のコードでは、removeCharWithoutMalloc関数を使用して文字列内の特定の文字を削除します。ポインタdstを使用して元の文字列を更新し、削除後の文字列が表示されます。

これらの方法を使用すると、mallocを使用せずにC言語で文字の出現を削除することができます。他にもさまざまなアプローチがありますが、ここではシンプルな方法を紹介しました。必要に応じて、これらの例を参考にしてください。