我只想从字符串中提取数字,并将它们放入数组中。
例如,字符串是"fds34 21k34 k25j 6 10j340ii0i5"
。
我想做一个数组,其中的元素如下:
arr[0]=34, arr[1]=21, arr[2]=34, arr[3]=25, arr[4]=6, arr[5]=10, arr[6]=340, arr[7]=0, arr[8]=5;
我的试用代码:
#include <stdio.h>
int main()
{
char ch;
int i, j;
int pr[100];
i=0;
while ( (ch = getchar()) != '\n' ){
if( ch>='0' && ch<='9' ){
pr[i] = ch-'0';
i++;
}
for(j=0; j<i; j++)
printf("pr[%d]: %d\n", j, pr[j]);
return 0;
}
我的代码无法识别连续的数字。只是 'pr
' 数组有 {3, 4, 2, 1, 3, 4, 2, 5, 6, 1, 0, 3, 4, 0, 0, 5}
。有什么方法可以实现我的目标吗?
最佳答案
也就是算法:
- 使用字符串存储当前号码。首先,将其初始化为空字符串
- 当ch是一个数字('0'..'9')时,把它放在这个字符串中
- 当ch 不是数字时,如果string 不为空,则通过atoi 函数将当前字符串转换为数字,并将该数字存储在数组中。之后,再次将当前字符串初始化为空。
例如:我有字符串“ab34 56d1”
- 使用字符串str存储当前数字,首先str =""(empty)
- ch = 'a',什么都不做(因为当前字符串为空)
- ch = 'b', 什么都不做
- ch = '3',把它变成字符串,所以str = "3"
- ch = '4',放到str,现在str = "34"
- ch = ' ',将“34”转为34,存入数组,再次初始化str=""
- .....
关于c - 如何只从字符串中提取数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33972278/