4

文字列から先行するすべてのスペースとタブを削除するC関数がある場合は、どのC関数ですか?

4

4 に答える 4

15

Cでは、文字列は、などのポインタ、char *strまたは場合によっては配列によって識別されます。どちらの方法でも、文字列の先頭を指す独自のポインタを宣言できます。

char *c = str;

次に、ポインタをスペースのような文字を超えて移動させることができます。

while (isspace(*c))
    ++c;

これにより、ポインタがスペースを指さなくなるまで、つまり先頭のスペースやタブの後に移動します。cこれにより、元の文字列は変更されません。ポインタが指している場所を変更しただけです。

取得するには、このインクルードが必要になりますisspace

#include <ctype.h>

または、空白文字とは何かについて独自のアイデアを定義することに満足している場合は、次の式を記述できます。

while ((*c == ' ') || (*c == '\t'))
    ++c;
于 2009-10-03T19:50:42.883 に答える
0
void trim(const char* src, char* buff, const unsigned int sizeBuff)
{
    if(sizeBuff < 1)
    return;

    const char* current = src;
    unsigned int i = 0;
    while(current != '\0' && i < sizeBuff-1)
    {
        if(*current != ' ' && *current != '\t')
            buff[i++] = *current; 
        ++current;
    }
    buff[i] = '\0';
}

バフに十分なスペースを与える必要があります。

于 2009-10-03T20:20:30.623 に答える