Как удалить все пробелы и вкладки от данной строки на языке C?

Я думал бы, что "ROWTERMINATOR = '\n'" будет работать. Я предложил бы открыть файл в инструменте, который показывает "скрытые символы", чтобы удостовериться, что строка завершается как Вы, думают. Я использую блокнот ++ для вещей как это.

5
задан Dave Jarvis 3 October 2009 в 20:27
поделиться

2 ответа

В C строка идентифицируется указателем, например char * str , или, возможно, массивом. В любом случае, мы можем объявить наш собственный указатель, который будет указывать на начало строки:

char *c = str;

Затем мы можем заставить наш указатель проходить мимо любых символов, похожих на пробелы:

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

Это переместит указатель вперед, пока он не перестанет указывать до пробела, то есть после любых начальных пробелов или табуляции. Это оставляет исходную строку без изменений - мы только что изменили местоположение, на которое указывает наш указатель c .

Вам понадобится это включение, чтобы получить isspace :

#include <ctype.h>

Или если вы счастливы определить свое собственное представление о том, что такое пробельный символ, вы можете просто написать выражение:

while ((*c == ' ') || (*c == '\t'))
    ++c;
14
ответ дан 18 December 2019 в 10:46
поделиться
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';
}

Вам просто нужно дать баффу достаточно места.

1
ответ дан 18 December 2019 в 10:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: