如何读取以逗号分隔的999以上的数字(例如10,000)?

时间:2017-11-15 10:10:23

标签: c

我是C(和编程)的新手,我的问题有可能通过一些基本的搜索和阅读来回答;如果问题存在,请指出我对问题的答案。

假设我想从用户那里读取一个可能超过999的数字。根据我的经验,如果我输入值10,000(包括逗号),程序将读取数字直到逗号,然后停止输入。因此,输入将是10而不是10000。

如何让它读成'10,000',好像它是10000?

3 个答案:

答案 0 :(得分:1)

#include <stdio.h>
#include <stdlib.h>

void RemoveChar(char* Number, char chartoberemoved)
{
    char *p, *s;
    p = s = Number;
    while (*s)//Run until last \r\n
    {

        if (*s != chartoberemoved)
        {
            *p++ = *s;
        }
        /* We always advance s. */
        s++;

    }
    /* We 0-terminate p. */
    *p = 0;
}


int main(int argc, char* argv[])
{
    char array[32];
    if (!argv[1])
        return -1;
    strcpy(array, argv[1]);
    RemoveChar(array, ',');
    int num = atoi(array);
    printf("%d\n", num);

    return 0;
}

答案 1 :(得分:1)

Linux上的大多数scanf和printf实现都支持'来告诉该号码可能有千位分隔符:

#include <stdio.h>
#include <locale.h>


int main(int argc, char const *argv[])
{
    setlocale(LC_NUMERIC, ""); // set the locale so that "," is a thousands separator

    const char* string = "10,000";

    float num = 0;
    sscanf(string, "%'f", &num);
    printf("%f\n", num);

    return 0;
}

返回

10000.000000

https://www.systutorials.com/docs/linux/man/3-printf/

答案 2 :(得分:-1)

使用strtok可在此处找到其信息和文档。 link