1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- /*!
- * \file lib/gis/commas.c
- *
- * \brief GIS Library - Comma string functions.
- *
- * (C) 2001-2014 by the GRASS Development Team
- *
- * This program is free software under the GNU General Public License
- * (>=v2). Read the file COPYING that comes with GRASS for details.
- *
- * \author GRASS GIS Development Team
- *
- * \date 1999-2014
- */
- #include <string.h>
- #include <grass/gis.h>
- /**
- * \brief Inserts commas into a number string.
- *
- * Examples:
- *
- * - 1234567 becomes 1,234,567
- * - 1234567.89 becomes 1,234,567.89
- * - 12345 becomes 12,345
- * - 1234 stays 1234
- *
- * <b>Note:</b> Does not work with negative numbers.
- *
- * \param[in,out] buf string
- * \return 1 if no commas inserted
- * \return 0 if commas inserted
- */
- int G_insert_commas(char *buf)
- {
- char number[100];
- int i, len;
- int comma;
- while (*buf == ' ')
- buf++;
- strcpy(number, buf);
- for (len = 0; number[len]; len++)
- if (number[len] == '.')
- break;
- if (len < 5)
- return 1;
- i = 0;
- if ((comma = len % 3)) {
- while (i < comma)
- *buf++ = number[i++];
- *buf++ = ',';
- }
- for (comma = 0; number[i]; comma++) {
- if (number[i] == '.')
- break;
- if (comma && (comma % 3 == 0))
- *buf++ = ',';
- *buf++ = number[i++];
- }
- while (number[i])
- *buf++ = number[i++];
- *buf = 0;
- return 0;
- }
- /**
- * \brief Removes commas from number string.
- *
- * Examples:
- * - 1,234,567 becomes 1234567<br>
- * - 1,234,567.89 becomes 1234567.89<br>
- * - 12,345 becomes 12345<br>
- * - 1234 stays 1234
- *
- * \param[in,out] buf string
- * \return
- */
- void G_remove_commas(char *buf)
- {
- char *b;
- for (b = buf; *b; b++)
- if (*b != ',')
- *buf++ = *b;
- *buf = 0;
- }
|