C-Programm zum Entfernen führender Leerzeichen aus einer Zeichenfolge

C-Programm zum Entfernen führender Leerzeichen aus einer Zeichenfolge

In diesem Blogbeitrag erfahren Sie, wie Sie ein C-Programm schreiben, um führende Leerzeichen aus einer Zeichenfolge zu entfernen. So entfernen Sie beide führenden Leerzeichen in einer Zeichenfolge mithilfe einer Schleife in der C-Programmierung. Außerdem Logik zum Löschen aller führenden Leerzeichen aus einer bestimmten Zeichenfolge in C.

Ich werde die Hilfe der Funktion isspace verwenden, um das Leerzeichen in der angegebenen Eingabezeichenfolge zu finden. Sehen wir uns also das C-Programm an, um führende Leerzeichen aus einer Zeichenfolge zu entfernen.

Beispiele:

Input String with leading whitespace:> "     aticle world .com"


Output String:> "aticle world .com"

C-Programm, um führende und abschließende Leerzeichen aus einer Zeichenfolge zu entfernen:

Sehen wir uns einige Möglichkeiten an, um führende Leerzeichen aus der angegebenen Eingabezeichenfolge zu entfernen. Sie können es entsprechend Ihrer Verwendung verwenden.

Wenn Sie die Eingabezeichenfolge ändern können:

Die folgende Funktion gibt einen Zeiger auf eine Teilzeichenfolge der ursprünglichen Zeichenfolge zurück. Auch wenn die angegebene Zeichenfolge dynamisch zugewiesen wurde, sollte der Programmierer den ursprünglichen Zeiger verwenden, um den zugewiesenen Speicher freizugeben. Sie dürfen nicht als Rückgabezeiger zum Freigeben des Speichers verwendet werden.

Methode 1:

Algorithmus:

1. Durchlaufen Sie die angegebene Zeichenfolge Zeichen für Zeichen und übergeben Sie sie an isspace Funktion.

2. Erhöhen Sie die Zeigervariable, wenn Sie auf den Leerzeichen-Buchstaben stoßen.

3. Unterbrechen Sie die Schleife, wenn Sie auf das Nullzeichen stoßen (Einschränkung, es darf kein weiteres Nullzeichen in der Zeichenfolge geben, außer dem abschließenden Nullzeichen) und auf alle Zeichen, die keine Leerzeichen sind.

4. Gibt den aktualisierten Zeiger von der Funktion zurück. Es wurden jetzt alle führenden Leerzeichen entfernt.

#include <ctype.h>
#include<string.h>
#include <stdio.h>

char *trimLeadingWhiteChar(char *str)
{
    if ((str != NULL) && (*str != '\0'))
    {
        // Trim leading space
        while((*str != '\0') && isspace((unsigned char)*str))
        {
            ++str;
        }

    }
    return str;
}


int main()
{
    char str[] = "     aticle world .com";

    printf("\nString before trimming Leading white space: \n'%s'\n\n", str);

    char *p = trimLeadingWhiteChar(str);

    printf("\n\nString after trimming Leading white spaces: \n'%s'\n\n", p);

    return 0;
}

Ausgabe:

Methode 2:

#include <ctype.h>
#include<string.h>
#include <stdio.h>

void trimLeadingWhiteChar(char* str)
{
    if ((str != NULL) && (*str != '\0'))
    {
        // First remove leading spaces
        const char* firstNonSpace = str;
        while(*firstNonSpace != '\0' && isspace((unsigned char)*firstNonSpace))
        {
            ++firstNonSpace;
        }
        unsigned int len = strlen(firstNonSpace)+1;
        memmove(str, firstNonSpace, len);
    }
}


int main()
{
    char str[] = "     aticle world .com";

    printf("\nString before trimming leading white space: \n'%s'\n\n", str);

    trimLeadingWhiteChar(str);

    printf("\n\nString after trimming leading white spaces: \n'%s'\n\n", str);

    return 0;
}

Ausgabe:

Wenn Sie die Eingabezeichenfolge nicht ändern können:

Diese Methode ist nützlich, wenn Sie die Eingabezeichenfolge nicht ändern möchten. Bei dieser Methode speichern wir die gekürzte Eingabezeichenfolge im angegebenen Ausgabepuffer, der groß genug sein muss, um das Ergebnis zu speichern.

#include <ctype.h>
#include<string.h>
#include <stdio.h>


unsigned int trimLeadingWhiteChar(char *outputBuffer, unsigned int givenStringLen, const char *str)
{
    unsigned int  outputBufferSize = 0;
    if((str != NULL)
            && (givenStringLen > 0))
    {
        // Trim leading space
        while(*str != '\0' && isspace((unsigned char)*str))
        {
            ++str;
        }

        if(*str == 0)  // All spaces?
        {
            *outputBuffer = 0;
            outputBufferSize = 1;
        }
        else
        {
            outputBufferSize = strlen(str);

            // Copy trimmed string and add null terminator
            memcpy(outputBuffer, str, outputBufferSize);

            //Assign null character
            outputBuffer[outputBufferSize] = 0;
        }
    }

    return outputBufferSize;
}


int main()
{
    char str[] = "     aticle world .com";

    const unsigned int gievenStringSize = sizeof(str);
    char outputBuffer[gievenStringSize];

    printf("\nString before trimming leading white char: \n'%s'\n\n", str);

    printf("\n\nString len before trimming leading white char: \n%d\n\n", gievenStringSize);

    unsigned int lenSubString = trimLeadingWhiteChar(outputBuffer,gievenStringSize,str);

    printf("\n\nString after trimming leading white char: \n'%s'\n\n", outputBuffer);
    printf("\n\nString len after trimming leading white char: \n%d\n\n", lenSubString);

    return 0;
}

Ausgabe

Empfohlener Beitrag:

  • C-Programm, um führende und abschließende Leerzeichen aus einer Zeichenfolge zu entfernen.
  • Verwendung der Funktion iscntrl in C.
  • Wie verwende ich die isalpha-Funktion in der C-Programmierung?
  • Isalnum-Funktion in der C-Programmierung verwenden?
  • Wie verwende ich die isdigit-Funktion in der C-Programmierung?
  • Verwendung des sizeof-Operators in C.
  • _Alignof oder alignof-Operator in C