我是C(和编程)的新手,我的问题有可能通过一些基本的搜索和阅读来回答;如果问题存在,请指出我对问题的答案。
假设我想从用户那里读取一个可能超过999的数字。根据我的经验,如果我输入值10,000(包括逗号),程序将读取数字直到逗号,然后停止输入。因此,输入将是10而不是10000。
如何让它读成'10,000',好像它是10000?
答案 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
答案 2 :(得分:-1)
使用strtok
可在此处找到其信息和文档。 link