假设我有一个这样的字符数组
char *array = "hello my name is steven 123*3";
我想从此表达式中提取 123
并将其放入 int
中。
我知道我可以做类似的事情
int firstnum = array[15] - '0';
(假设 1 是数组中的第 15 个字符),这将给我 firstnum = 1
。
但我希望能够将整个 123
数字变成一个整数,但我不太确定该怎么做。
感谢任何帮助
编辑:我刚刚发现了一个叫做 strtol 的东西,但不确定如何使用它。
我在想long numberwanted = strtol(array[15], *p, 10);但是我怎么让它知道什么时候停止呢?还是一旦到达非整数或非长整数就停止?什么是 *p?
尝试使用 sscanf
。
int n1 = 0, n2 = 0;
char ch = 0;
char *array = "hello my name is steven 123*3";
sscanf(array, "%*[^0-9] %d %c %d", &n1, &ch, &n2);
这假定前缀字符串永远不会包含数字。如果它可以包含一个数字,您可以像这样从后面读取它(假设数据包括:前缀字符串、一个或多个数字、一个字符、一个或多个数字。
int n1 = 0, n2 = 0;
char ch = 0;
char *array = "hello my name is steven 123*3";
size_t i = strlen(array);
while (--i >= 0 && isdigit(array[i]))
;
sscanf(array+i+1, "%d", &n2);
ch = array[i];
while (--i >= 0 && isdigit(array[i]))
;
sscanf(array+i+1, "%d", &n1);
我是一名优秀的程序员,十分优秀!