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