首页 > 解决方案 > 如何使用 C 中的函数从字符串中仅提取数字?

问题描述

像往常一样,我试图提高我在 C 语言中的编码技能,所以我做了一个练习来练习。所以它说我应该向字符串输入一些值(必须有字母和数字),然后我必须使用函数从这个字符串中只提取数字并将结果输出到main. 所以事实上,如果我输入 eg: sdasd5465,它必须只输出5465

所以现在我确实编写了代码,但我无法解决一个问题。编译器在我的函数中向我显示了一个错误,它指向了我的其中一行myfucntion并给出了一个错误:“下标值既不是数组也不是指针也不是向量”,指向这一行for(i=0; str[i];i++)。这是代码,我真诚地希望我现在问的是正确的问题)

#include <stdio.h>
#define N 100

int main() {
    char str[N];
    printf("String, pls : ");
    fgets(str,100,stdin);
    myfunction(str);
    printf("After extracting : ");
    printf("%s\n",str);
}

void myfunction(char str){
    int i;
    int j = 0;
    for(i=0; str[i] ;i++){

        if(str[i] >= '0' && str[i] <= '9'){
            str[j] = str[i];
            j++;
        }
    }
    str[j] = '\0';
}

标签: c

解决方案


典型的运行指针算法。一个简单的新手函数可能如下所示:

void myfunction(char *str){
    int outputidx = 0;
    for (int inputidx = 0; str[inputidx] != '\0'; inputidx++) {
        if (isdigit(str[inputidx])) {
              str[outputidx] = str[inputidx];
              outputidx++;
        }
    }
    str[outputidx] = '\0';
}

推荐阅读