c - 如何只从字符串中提取数字?

标签 c arrays string

我只想从字符串中提取数字,并将它们放入数组中。

例如,字符串是"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/

相关文章:

c - 将未绑定(bind)的值排序到绑定(bind)的范围内?

javascript - 将 Firebase 数据存储到 JavaScript 中的数组中

javascript - 对 json 数据进行分类并将其存储在单独的数组中

由 println 隐式调用的 Java 方法....为什么?

string - 将十六进制字符串解析为图像/颜色

c - 一个源文件提供多个组件

c - 如何找到数组的大小(从指向数组第一个元素的指针)?

c - 如何在 C 中释放指向动态数组的指针?

c++ - 插入到数组的所需元素中,并在 C++ 中将所有其他元素推到一个位置

.net - 在.Net中以零开头填充一个数字