Значение поля ввода - удаляет начальные нули

Если у вас есть список ls записей для каждого файла в каталоге, где content - указатель на выделенный t_entry, содержащий имя файла и stat информацию, например,

typedef struct s_list {
    void          *content;
    size_t         content_size;
    struct s_list *next;
} t_list;

и

typedef struct s_entry {
    char       *filename;
    struct stat filestat;
} t_entry;

Функция freelist (t_list *head) должна будет выполнять итерацию по каждому узлу, а также:

  1. free filename, выделенных в каждом t_entry;
  2. free выделенный t_entry; и наконец
  3. free сам узел t_list.

Вы можете сделать что-то похожее на следующее:

void freelist (t_list *head)
{
    t_list *node = head;        /* temporary node to iterate list  */
                                /* (you could use head, but don't) */
    while (*node) {
        t_list *victim = node;  /* pointer to current node to free */
        t_entry *entry = node->content;     /* pointer to content */

        free (entry->filename)  /* free content->filename */
        free (entry);           /* free t_entry struct itself */

        node = node->next;      /* advance before freeing victim */

        free (victim);          /* free current t_list node (victim) */
    }
}

Обратите внимание, что вместо использования node, вы можете просто использовать head для итерации, поскольку freelist получает копию это не изменило бы адрес списка в любом случае - и так как список не останется, когда вы закончите, но гораздо лучше использовать временный узел для итерации списка (в любой функции), чтобы вы не путали обстоятельства, когда вы обрабатываете фактический адрес списка (например, параметр был t_list **) или копию указателя (параметр был t_list *).

Посмотрите вещи и дайте мне знать, если у вас есть дополнительные вопросы.

39
задан Samuel Liew 16 September 2018 в 02:55
поделиться

4 ответа

var value= document.getElementById("theTextBoxInQuestion").value;
var number= parseFloat(value).toFixed(2);
13
ответ дан heeen 27 November 2019 в 02:10
поделиться

Это кажется, что Вы просто хотите удалить начальные нули, если нет только один оставленный ("0" для целого числа или "0.xxx" для плавания, где x может быть чем-либо).

Это должно быть хорошо для первого сокращения:

while (s.charAt(0) == '0') {            # Assume we remove all leading zeros
    if (s.length == 1) { break };       # But not final one.
    if (s.charAt(1) == '.') { break };  # Nor one followed by '.'
    s = s.substr(1, s.length-1)
}
9
ответ дан paxdiablo 27 November 2019 в 02:10
поделиться

Попробуйте это:

<input type="text" onblur="this.value=this.value.replace(/^0+(?=\d\.)/, '')">
2
ответ дан Gumbo 27 November 2019 в 02:10
поделиться

Ниже представлено более упрощенное решение. Проверьте это!

var resultString = document.getElementById("theTextBoxInQuestion")
                           .value
                           .replace(/^[0]+/g,"");
49
ответ дан 27 November 2019 в 02:10
поделиться
Другие вопросы по тегам:

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