Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Buy a domain name - Register cheap domain names from $0.99 - Namecheap

Scalable Hosting That Grows With You

Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Semrush - keyword research tool

Boost your online presence with premium web hosting and servers

Disclosure: My content contains affiliate links.

40,026 questions

51,982 answers

573 users

How to remove trailing nulls (0) from byte array in C

1 Answer

0 votes
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

unsigned char* RemoveTrailingNulls(const unsigned char* byteArray, size_t length, size_t* newLength) {
    if (byteArray == NULL || length == 0) {
        *newLength = 0;
        return NULL;
    }

    // Find the new length by iterating backward to the first non-zero element
    *newLength = length;
    while (*newLength > 0 && byteArray[*newLength - 1] == 0) {
        (*newLength)--;
    }

    // Allocate memory for the trimmed array
    unsigned char* trimmedArray = (unsigned char*)malloc(*newLength * sizeof(unsigned char));
    if (trimmedArray == NULL) {
        perror("Failed to allocate memory");
        exit(1);
    }

    // Copy the elements to the new array
    memcpy(trimmedArray, byteArray, *newLength);

    return trimmedArray;
}

int main() {
    unsigned char byteArray[] = {1, 2, 3, 0, 0, 0, 0};
    size_t length = sizeof(byteArray) / sizeof(byteArray[0]);

    // Remove trailing nulls
    size_t newLength;
    unsigned char* trimmedArray = RemoveTrailingNulls(byteArray, length, &newLength);

    for (size_t i = 0; i < newLength; i++) {
        printf("%d", trimmedArray[i]);
        if (i != newLength - 1) {
            printf(", ");
        }
    }
    printf("\n");

    free(trimmedArray);

    return 0;
}

 
/*
run:
 
1, 2, 3
 
*/

 



answered Mar 12, 2025 by avibootz

Related questions

1 answer 113 views
1 answer 95 views
2 answers 90 views
1 answer 75 views
1 answer 126 views
1 answer 74 views
2 answers 93 views
...