所以说我有一个char数组
char *array = "hello my name is steven 123*3";
我希望从此表达式中提取123
并将其放入int
。
我知道我可以做类似
的事情int firstnum = array[15] - '0';
(假设1是数组中的第15个字符),这将给我firstnum = 1
。
但是我希望能够将整个123
数字放到一个整数中,我不太清楚如何做到这一点。
感谢任何帮助
编辑:我刚刚发现了一些名为strtol的东西,但我不确定如何使用它。
我正在思考 long numberswanted = strtol(array [15],* p,10); 但是我怎么知道什么时候停止?或者,一旦你进入非int或非长期,它会停止吗?什么是* p?答案 0 :(得分:0)
尝试使用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);
答案 1 :(得分:0)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(){
char *array = "hello my name is steven 123*3";
int num;
char *p;//p in strtol : Pointer of position where a character that can not be interpreted appeared. point to '*' after execution.
num = strtol(array + strcspn(array, "0123456789"), &p, 10);
printf("%d\n", num);
return 0;
}