C 如何读取999以上用逗号分隔的数字(如10000)?
我是C语言(和编程)的新手,我的问题可以通过一些基本的搜索和阅读来回答;如果这个问题存在,请给我一个答案 假设我想从用户那里读取一个可能高于999的数字。根据我的经验,如果我输入值10000(包括逗号),程序将读取数字直到逗号,然后停止输入。因此,输入将是10而不是10000 如何使其读作“10000”就好像它是10000?C 如何读取999以上用逗号分隔的数字(如10000)?,c,C,我是C语言(和编程)的新手,我的问题可以通过一些基本的搜索和阅读来回答;如果这个问题存在,请给我一个答案 假设我想从用户那里读取一个可能高于999的数字。根据我的经验,如果我输入值10000(包括逗号),程序将读取数字直到逗号,然后停止输入。因此,输入将是10而不是10000 如何使其读作“10000”就好像它是10000?#包括 #include <stdio.h> #include <stdlib.h> void RemoveChar(char* Number, c
#包括
#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;
}
#包括
void RemoveChar(char*Number,char chartoberemoved)
{
字符*p,*s;
p=s=数量;
while(*s)//运行到最后一次\r\n
{
如果(*s!=已删除)
{
*p++=*s;
}
/*我们总是向s前进*/
s++;
}
/*我们以0-p结束*/
*p=0;
}
int main(int argc,char*argv[])
{
字符数组[32];
如果(!argv[1])
返回-1;
strcpy(数组,argv[1]);
RemoveChar(数组,,);
int num=atoi(数组);
printf(“%d\n”,num);
返回0;
}
使用strtok其信息和文档可在此处找到 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;
}
读取为字符串,从字符串中删除所有逗号,分析字符串以将其转换为整数。@Someprogrammerdude谢谢。这也是我最初的想法。我可能需要阅读如何做到这一点。
10000.000000