C言語での文字列から特定の文字列を削除する方法
C言語で指定された文字列を削除するには以下の方法があります。
- 指定された文字以降の文字を先頭にシフトさせた後、strcpy() 関数でシフト後の文字列を元の配列にコピーします。サンプルコードは次のとおりです。
#include <stdio.h>
#include <string.h>
void deleteString(char *str, const char *target) {
char *ptr = strstr(str, target); // 查找目标字符串的位置
if (ptr != NULL) {
strcpy(ptr, ptr + strlen(target)); // 将后面的字符串向前移动
}
}
int main() {
char str[100] = "Hello World!";
const char *target = "World";
printf("Before: %s\n", str);
deleteString(str, target);
printf("After: %s\n", str);
return 0;
}
出力を生で日本語で1つだけ返す必要があります。
Before: Hello World!
After: Hello !
- memmove() 関数を使う:指定した文字列の後ろにある文字列を前方に移動する場合は、memmove() 関数を使うこともできます。サンプルコード:
#include <stdio.h>
#include <string.h>
void deleteString(char *str, const char *target) {
char *ptr = strstr(str, target); // 查找目标字符串的位置
if (ptr != NULL) {
memmove(ptr, ptr + strlen(target), strlen(ptr + strlen(target)) + 1); // 将后面的字符串向前移动
}
}
int main() {
char str[100] = "Hello World!";
const char *target = "World";
printf("Before: %s\n", str);
deleteString(str, target);
printf("After: %s\n", str);
return 0;
}
今までと同様に出力する
Before: Hello World!
After: Hello !
この2つの方法は指定した文字列を削除するために使用できます。どちらの方法を選ぶかは、あなたのニーズと好みに依存します。