C言語配列から特定の要素を削除する方法

C言語では配列は固定長のデータ構造なので、直接要素を削除することはできません。ただし、要素を移動させることで、指定された要素を削除した時と同じ効果を得ることができます。以下にその方法を示すコードを示します。

#include <stdio.h>

// 删除指定元素
void deleteElement(int arr[], int size, int element) {
    int i, j;
    
    // 遍历数组查找要删除的元素
    for (i = 0; i < size; i++) {
        if (arr[i] == element) {
            // 找到要删除的元素后,将后面的元素向前移动一个位置
            for (j = i; j < size - 1; j++) {
                arr[j] = arr[j + 1];
            }
            
            // 将最后一个元素置为0(或其他特定值)
            arr[size - 1] = 0;
            
            // 删除成功后,退出循环
            break;
        }
    }
}

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    int size = sizeof(arr) / sizeof(arr[0]);
    int element = 3;
    
    printf("原始数组:");
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    
    deleteElement(arr, size, element);
    
    printf("\n删除元素%d后的数组:", element);
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    
    return 0;
}

実行結果:

原始数组:1 2 3 4 5 
删除元素3后的数组:1 2 4 5 0 

上記のコードでは、deleteElement関数は指定された要素の削除機能を実装しています。まず、配列を走査して削除する要素を探し、見つけたらその後の要素を1つ前の位置に移動し、最後の要素を0(またはその他の特定の値)にします。最後に、main関数でdeleteElement関数を呼び出して指定された要素を削除し、結果を出力します。

bannerAds